diff options
author | jkh <jkh@FreeBSD.org> | 1995-05-10 07:45:00 +0000 |
---|---|---|
committer | jkh <jkh@FreeBSD.org> | 1995-05-10 07:45:00 +0000 |
commit | 2bc42149babfd3d9e70daf6601cadc42126fe143 (patch) | |
tree | 92745840ffa98c695ea55991017a8e10cc5d29f3 /usr.sbin | |
parent | b06a2da1188043774a21f325c65893b1dd1937ba (diff) | |
download | FreeBSD-src-2bc42149babfd3d9e70daf6601cadc42126fe143.zip FreeBSD-src-2bc42149babfd3d9e70daf6601cadc42126fe143.tar.gz |
Fold in all my recent changes.
Do another clean-up pass over this, making the generic menu handler much
more powerful (now handles multiple dispatch). A few more menus fleshed
out and the beginnings of the distribution handler committed. Should
be transfering full distributions over in the next commit.
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/sade/Makefile | 2 | ||||
-rw-r--r-- | usr.sbin/sade/dmenu.c | 78 | ||||
-rw-r--r-- | usr.sbin/sade/menus.c | 399 | ||||
-rw-r--r-- | usr.sbin/sade/sade.h | 84 | ||||
-rw-r--r-- | usr.sbin/sysinstall/Makefile | 2 | ||||
-rw-r--r-- | usr.sbin/sysinstall/dist.c | 123 | ||||
-rw-r--r-- | usr.sbin/sysinstall/dist.h | 82 | ||||
-rw-r--r-- | usr.sbin/sysinstall/dmenu.c | 78 | ||||
-rw-r--r-- | usr.sbin/sysinstall/menus.c | 399 | ||||
-rw-r--r-- | usr.sbin/sysinstall/sysinstall.h | 84 |
10 files changed, 867 insertions, 464 deletions
diff --git a/usr.sbin/sade/Makefile b/usr.sbin/sade/Makefile index 4aa36cc..24baf10 100644 --- a/usr.sbin/sade/Makefile +++ b/usr.sbin/sade/Makefile @@ -8,7 +8,7 @@ SRCS= globals.c main.c dmenu.c menus.c \ misc.c msg.c system.c install.c \ termcap.c makedevs.c media.c variable.c \ devices.c dist.c lang.c wizard.c \ - disks.c command.c + disks.c command.c decode.c CFLAGS += -Wall -g -I${.CURDIR}/../libdisk diff --git a/usr.sbin/sade/dmenu.c b/usr.sbin/sade/dmenu.c index 36bc88c..af52aca 100644 --- a/usr.sbin/sade/dmenu.c +++ b/usr.sbin/sade/dmenu.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: dmenu.c,v 1.3 1995/04/29 19:33:00 jkh Exp $ + * $Id: dmenu.c,v 1.4 1995/05/01 21:56:20 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -117,15 +117,19 @@ dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max) } dialog_clear(); if (!rval) { - if (menu->options & DMENU_MULTIPLE_TYPE) - tmp = &(menu->items[0]); + if (menu->options & DMENU_MULTIPLE_TYPE) { + if (menu->options & DMENU_CALL_FIRST) + tmp = &(menu->items[0]); + else { + if (decode_and_dispatch_multiple(menu, result) || + menu->options & DMENU_SELECTION_RETURNS) { + items_free(nitems, curr, max); + return; + } + } + } else { - for (tmp = menu->items; tmp->title; tmp++) - if (!strcmp(result, - (*tmp->title == '*') ? tmp->title + 1 : - tmp->title)) - break; - if (!tmp->title) + if ((tmp = decode(menu, result)) == NULL) msgFatal("Menu item `%s' not found??", result); } } @@ -135,61 +139,7 @@ dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max) items_free(nitems, curr, max); return; } - switch (tmp->type) { - /* User whapped ESC twice and wants a sub-shell */ - case DMENU_SHELL_ESCAPE: - systemShellEscape(); - break; - - /* We want to simply display a file */ - case DMENU_DISPLAY_FILE: - systemDisplayFile((char *)tmp->ptr); - break; - - /* It's a sub-menu; recurse on it */ - case DMENU_SUBMENU: { - int choice, scroll, curr, max; - - choice = scroll = curr = max = 0; - dmenuOpen((DMenu *)tmp->ptr, &choice, &scroll, &curr, &max); - break; - } - - /* Execute it as a system command */ - case DMENU_SYSTEM_COMMAND: - (void)systemExecute((char *)tmp->ptr); - break; - - /* Same as above, but execute it in a prgbox */ - case DMENU_SYSTEM_COMMAND_BOX: - use_helpfile(NULL); - use_helpline("Select OK to dismiss this dialog"); - dialog_prgbox(tmp->title, (char *)tmp->ptr, 22, 76, 1, 1); - dialog_clear(); - break; - - case DMENU_CALL: - if (((int (*)())tmp->ptr)(result)) { - items_free(nitems, curr, max); - return; - } - break; - - case DMENU_CANCEL: - items_free(nitems, curr, max); - return; - - case DMENU_SET_VARIABLE: - variable_set((char *)tmp->ptr); - msgInfo("Setting option %s", tmp->ptr); - break; - - default: - msgFatal("Don't know how to deal with menu type %d", tmp->type); - } - - /* Did the user want to make this a single-selection menu? */ - if (menu->options & DMENU_SELECTION_RETURNS) { + if (dispatch(tmp) || menu->options & DMENU_SELECTION_RETURNS) { items_free(nitems, curr, max); return; } diff --git a/usr.sbin/sade/menus.c b/usr.sbin/sade/menus.c index 57dd0ab..e6db794 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.8 1995/05/05 23:47:43 jkh Exp $ + * $Id: menus.c,v 1.9 1995/05/08 10:20:54 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -57,6 +57,12 @@ extern DMenu MenuMedia; extern DMenu MenuInstallType; extern DMenu MenuInstallOptions; extern DMenu MenuDistributions; +extern DMenu MenuXF86Select; +extern DMenu MenuXF86SelectCore; +extern DMenu MenuXF86SelectServer; +extern DMenu MenuXF86SelectFonts; +extern DMenu MenuXF86; +extern DMenu MenuInstallFtpOptions; /* The initial installation menu */ DMenu MenuInitial = { @@ -69,13 +75,13 @@ option by pressing enter. If you'd like a shell, press ESC", /* 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, (void *)"usage.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"usage.hlp", 0, 0 }, { "Doc", "More detailed documentation on FreeBSD.", /* D */ - DMENU_SUBMENU, (void *)&MenuDocumentation, 0 }, + DMENU_SUBMENU, (void *)&MenuDocumentation, 0, 0 }, { "Lang", "Select natural language options.", /* L */ - DMENU_SUBMENU, (void *)&MenuLanguage, 0 }, + DMENU_SUBMENU, (void *)&MenuLanguage, 0, 0 }, { "Install", "Begin installation", /* I */ - DMENU_CALL, (void *)installCustom, 0 }, + DMENU_CALL, (void *)installCustom, 0, 0 }, { NULL } }, }; @@ -92,18 +98,19 @@ answers in the FAQ.", "Confused? Press F1 for help.", "usage.hlp", /* help file */ { { "README", "Read this for a general description of FreeBSD", /* R */ - DMENU_DISPLAY_FILE, (void *)"readme.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"readme.hlp", 0, 0 }, { "Hardware", "The FreeBSD survival guide for PC hardware.", /* H */ - DMENU_DISPLAY_FILE, (void *)"hardware.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"hardware.hlp", 0, 0 }, { "Install", "A step-by-step guide to installing FreeBSD.", /* I */ - DMENU_DISPLAY_FILE, (void *)"install.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"install.hlp", 0, 0 }, { "FAQ", "Frequently Asked Questions about FreeBSD.", /* F */ - DMENU_DISPLAY_FILE, (void *)"faq.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"faq.hlp", 0, 0 }, { NULL } }, }; -/* The language selection menu */ /* + * The language selection menu. + * * Note: The RADIO menus use a slightly different syntax. If an item * name starts with `*', it's considered to be "ON" by default, * otherwise off. @@ -116,31 +123,32 @@ 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.", /* prompt */ +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, (void *)lang_set_Danish, 0 }, + DMENU_CALL, (void *)lang_set_Danish, 0, 0 }, { "Dutch", "Dutch language and character set (ISO-8859-1)", /* D */ - DMENU_CALL, (void *)lang_set_Dutch, 0 }, + DMENU_CALL, (void *)lang_set_Dutch, 0, 0 }, { "English", "English language (system default)", /* E */ - DMENU_CALL, (void *)lang_set_English, 0 }, + DMENU_CALL, (void *)lang_set_English, 0, 0 }, { "French", "French language and character set (ISO-8859-1)", /* F */ - DMENU_CALL, (void *)lang_set_French, 0 }, + DMENU_CALL, (void *)lang_set_French, 0, 0 }, { "German", "German language and character set (ISO-8859-1)", /* G */ - DMENU_CALL, (void *)lang_set_German, 0 }, + DMENU_CALL, (void *)lang_set_German, 0, 0 }, { "Italian", "Italian language and character set (ISO-8859-1)", /* I */ - DMENU_CALL, (void *)lang_set_Italian, 0 }, + DMENU_CALL, (void *)lang_set_Italian, 0, 0 }, { "Japanese", "Japanese language and default character set (romaji)",/* J */ - DMENU_CALL, (void *)lang_set_Japanese, 0 }, + DMENU_CALL, (void *)lang_set_Japanese, 0, 0 }, { "Norwegian", "Norwegian language and character set (ISO-8859-1)", /* N */ - DMENU_CALL, (void *)lang_set_Norwegian, 0 }, + DMENU_CALL, (void *)lang_set_Norwegian, 0, 0 }, { "Russian", "Russian language and character set (cp866-8x14)", /* R */ - DMENU_CALL, (void *)lang_set_Russian, 0 }, + DMENU_CALL, (void *)lang_set_Russian, 0, 0 }, { "Spanish", "Spanish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, (void *)lang_set_Spanish, 0 }, + DMENU_CALL, (void *)lang_set_Spanish, 0, 0 }, { "Swedish", "Swedish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, (void *)lang_set_Swedish, 0 }, + DMENU_CALL, (void *)lang_set_Swedish, 0, 0 }, { NULL } }, }; @@ -150,20 +158,20 @@ DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS, "FreeBSD can be installed directly from a CDROM containing a valid\n\ FreeBSD 2.0.5 distribution. If you're seeing this menu, it's because\n\ your CDROM drive was not properly auto-detected, or you did not launch\n\ -this installation from the CD under DOS or Windows. If you think you're\n\ +this installation from the CD under DOS or Windows. If you think you are\n seeing this dialog in error, you may wish to reboot FreeBSD with the\n\ --c boot flag (.. boot: /kernel -c) and check that your hardware and\n -the kernel agree on reasonable values.", +-c boot flag (.. boot: /kernel -c) and check that your hardware and\n\ +the kernel agree on reasonable values.", "Press F1 for more information on CDROM support", "media_cdrom.hlp", { { "Matsushita", "Panasonic \"Sound Blaster\" CDROM.", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/matcd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/matcd0a", 0, 0 }, { "Mitsumi", "Mitsumi FX-001 series drive (not IDE)", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/mcd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/mcd0a", 0, 0 }, { "SCSI", "SCSI CDROM drive attached to supported SCSI controller", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/cd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/cd0a", 0, 0 }, { "Sony", "Sony CDU31/33A or compatible CDROM drive", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/scd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/scd0a", 0, 0 }, { NULL } }, }; @@ -179,59 +187,59 @@ If the first site selected doesn't respond, try one of the alternates.", "Select a site that's close!", "media_ftp.hlp", { { "Primary", "ftp.freebsd.org", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.freebsd.org/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.freebsd.org/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Secondary", "freefall.cdrom.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://freefall.cdrom.com/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://freefall.cdrom.com/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Australia", "ftp.physics.usyd.edu.au", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.physics.usyd.edu.au/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.physics.usyd.edu.au/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Finland", "nic.funet.fi", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://nic.funet.fi/pub/unix/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://nic.funet.fi/pub/unix/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "France", "ftp.ibp.fr", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ibp.fr/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ibp.fr/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Germany", "ftp.uni-duisburg.de", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.uni-duisburg.de/pub/unix/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.uni-duisburg.de/pub/unix/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Israel", "orgchem.weizmann.ac.il", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-2.0.5-ALPHA", 0, 0 }, { "Japan", "ftp.sra.co.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.sra.co.jp/pub/os/FreeBSD/distribution/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.sra.co.jp/pub/os/FreeBSD/distribution/2.0.5-ALPHA", 0, 0 }, { "Japan-2", "ftp.mei.co.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-3", "ftp.waseda.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.waseda.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.waseda.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-4", "ftp.pu-toyama.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-5", "ftpsv1.u-aizu.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-6", "tutserver.tutcc.tut.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://tutserver.tutcc.tut.ac.jp/FreeBSD/FreeBSD-2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://tutserver.tutcc.tut.ac.jp/FreeBSD/FreeBSD-2.0.5-ALPHA", 0, 0 }, { "Japan-7", "ftp.ee.uec.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ee.uec.ac.jp/pub/os/FreeBSD.other/FreeBSD-2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ee.uec.ac.jp/pub/os/FreeBSD.other/FreeBSD-2.0.5-ALPHA", 0, 0 }, { "Korea", "ftp.cau.ac.kr", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.cau.ac.kr/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.cau.ac.kr/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Netherlands", "ftp.nl.net", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nl.net/pub/os/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nl.net/pub/os/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Russia", "ftp.kiae.su", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.kiae.su/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.kiae.su/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Sweden", "ftp.luth.se", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.luth.se/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.luth.se/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Taiwan", "netbsd.csie.nctu.edu.tw", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Thailand", "ftp.nectec.or.th", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nectec.or.th/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nectec.or.th/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "UK", "ftp.demon.co.uk", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "UK-2", "src.doc.ic.ac.uk", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "UK-3", "unix.hensa.ac.uk", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA", "ref.tfs.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ref.tfs.com/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ref.tfs.com/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA-2", "ftp.dataplex.net", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.dataplex.net/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.dataplex.net/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA-3", "kryten.atinc.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://kryten.atinc.com/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://kryten.atinc.com/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA-4", "ftp.neosoft.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.neosoft.com/systems/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.neosoft.com/systems/FreeBSD/2.0.5-ALPHA", 0, 0 }, { NULL } } }; @@ -243,22 +251,21 @@ DMENU_NORMAL_TYPE, 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. Please also note that the DES distribution is NOT available on \n\ -CDROM due to U.S. export restrictions.", +method.", "Press F1 for more information on the various media types", "media.hlp", { { "CDROM", "Install from a FreeBSD CDROM", - DMENU_CALL, (void *)mediaSetCDROM, 0 }, - { "FLOPPY", "Install from a floppy disk set", - DMENU_CALL, (void *)mediaSetFloppy, 0 }, + DMENU_CALL, (void *)mediaSetCDROM, 0, 0 }, + { "Floppy", "Install from a floppy disk set", + DMENU_CALL, (void *)mediaSetFloppy, 0, 0 }, { "DOS", "Install from a DOS partition", - DMENU_CALL, (void *)mediaSetDOS, 0 }, - { "TAPE", "Install from SCSI or QIC tape", - DMENU_CALL, (void *)mediaSetTape, 0 }, + DMENU_CALL, (void *)mediaSetDOS, 0, 0 }, + { "Tape", "Install from SCSI or QIC tape", + DMENU_CALL, (void *)mediaSetTape, 0, 0 }, { "FTP", "Install from an Internet FTP server", - DMENU_CALL, (void *)mediaSetFTP, 0 }, - { "FILESYSTEM", "Install from a UFS or NFS mounted distribution", - DMENU_CALL, (void *)mediaSetFS, 0 }, + DMENU_CALL, (void *)mediaSetFTP, 0, 0 }, + { "File System", "Install from a UFS or NFS mounted distribution", + DMENU_CALL, (void *)mediaSetFS, 0, 0 }, { NULL } }, }; @@ -266,26 +273,26 @@ CDROM due to U.S. export restrictions.", DMenu MenuInstallType = { DMENU_NORMAL_TYPE, "Choose Installation Type", -"As a convenience, we provide several `canned' installation types. \ -These pick what we consider to be the most reasonable defaults for the \ -type of system in question. If you would prefer to pick and choose \ +"As a convenience, we provide several `canned' installation types.\n\ +These pick what we consider to be the most reasonable defaults for the\n\ +type of system in question. If you would prefer to pick and choose\n\ the list of distributions yourself, simply select `custom'.", "Press F1 for more information on the various distributions", "dist_types.hlp", { { "Developer", "Includes full sources, binaries and doc but no games.", - DMENU_CALL, (void *)distSetDeveloper, 0 }, + DMENU_CALL, (void *)distSetDeveloper, 0, 0 }, { "X-Developer", "Same as above, but includes XFree86.", - DMENU_CALL, (void *)distSetXDeveloper, 0 }, + DMENU_CALL, (void *)distSetXDeveloper, 0, 0 }, { "User", "General user. Binaries and doc but no sources.", - DMENU_CALL, (void *)distSetUser, 0 }, + DMENU_CALL, (void *)distSetUser, 0, 0 }, { "X-User", "Same as above, but includes XFree86.", - DMENU_CALL, (void *)distSetXUser, 0 }, + DMENU_CALL, (void *)distSetXUser, 0, 0 }, { "Minimal", "The smallest configuration possible.", - DMENU_CALL, (void *)distSetMinimum, 0 }, + DMENU_CALL, (void *)distSetMinimum, 0, 0 }, { "Everything", "The entire source and binary distribution.", - DMENU_CALL, (void *)distSetEverything, 0 }, + DMENU_CALL, (void *)distSetEverything, 0, 0 }, { "Custom", "Specify your own distribution set", - DMENU_SUBMENU, (void *)&MenuDistributions, 0 }, + DMENU_SUBMENU, (void *)&MenuDistributions, 0, 0 }, { NULL } }, }; @@ -296,27 +303,188 @@ DMENU_MULTIPLE_TYPE, "Press F1 for a more complete description of these distributions.", "distribution_types.hlp", { { "*bin", "Binary base distribution (required)", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_BIN, 0 }, { "commercial", "Commercial demos and shareware", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_COMMERCIAL, 0 }, { "compat1x", "FreeBSD 1.x binary compatability package", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_COMPAT1X, 0 }, { "DES", "DES encryption code and sources", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_DES, 0 }, { "dict", "Spelling checker disctionary files", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_DICT, 0 }, { "games", "Games and other amusements (non-commercial)", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_GAMES, 0 }, { "info", "GNU info files", - DMENU_NOP, NULL, 0 }, - { "man", "System manual pages - strongly recommended", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_INFO, 0 }, + { "*man", "System manual pages - strongly recommended", + DMENU_SET_FLAG, (void *)&Dists, DIST_MANPAGES, 0 }, { "proflibs", "Profiled versions of the libraries", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_PROFLIBS, 0 }, { "src", "Sources for everything but DES", - DMENU_NOP, NULL, 0 }, - { "XFree86", "The XFree86 3.1.1 distribution", - DMENU_NOP, NULL, 0 }, + DMENU_CALL, (void *)distSetSrc, 0 }, + { "XFree86", "The XFree86 3.1.1L distribution", + DMENU_SUBMENU, (void *)&MenuXF86, 0 }, + { NULL } }, +}; + +DMenu MenuSrcDistributions = { +DMENU_MULTIPLE_TYPE, +"Select the sub-components of src you wish to install.", +"Please check off those portions of the FreeBSD source tree\n\ +you wish to install. A brief description of each source\n\ +hierarchy is contained in parenthesis below.", +"Press F1 for a more complete description of distributions.", +"distribution_types.hlp", +{ { "base", "Base src directory (top-level files in /usr/src)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_BASE, 0 }, + { "gnu", "/usr/src/gnu (user software from the GNU Project)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_GNU, 0 }, + { "etc", "/usr/src/etc (miscellaneous system files)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_ETC, 0 }, + { "games", "/usr/src/games (games)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_GAMES, 0 }, + { "include", "/usr/src/include (header files)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_INCLUDE, 0 }, + { "lib", "/usr/src/lib (system libraries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_LIB, 0 }, + { "libexec", "/usr/src/libexec (various system programs)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_LIBEXEC, 0 }, + { "lkm", "/usr/src/lkm (Loadable Kernel Modules)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_LKM, 0 }, + { "release", "/usr/src/release (release-generation tools)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_RELEASE, 0 }, + { "sbin", "/usr/src/sbin (system binaries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_SBIN, 0 }, + { "share", "/usr/src/share (documents and shared files)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_SHARE, 0 }, + { "sys", "/usr/src/sys (FreeBSD kernel)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_SYS, 0 }, + { "ubin", "/usr/src/usr.bin (user binaries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_UBIN, 0 }, + { "usbin", "/usr/src/usr.sbin (aux system binaries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_USBIN, 0 }, + { "XFree86", "XFree86 3.1.1L source + contrib distribution", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_XF86, 0 }, + { NULL } }, +}; + +DMenu MenuXF86 = { +DMENU_NORMAL_TYPE, +"XFree86 3.1.1u1 Distribution", +"Welcome to the XFree86 3.1.1u1 distribution from\n\ +The XFree86 Project, Inc. Recommended sequence: Select\n\ +desired release components, configure, start it up (optional!)", +"Press F1 to read the XFree86 release notes for FreeBSD", +"XFree86.hlp", +{ { "Select", "Select and load components of the XFree86 distribution", + DMENU_SUBMENU, &MenuXF86Select, 0, 0 }, + { "Configure", "Configure an installed XFree86 distribution", + DMENU_SYSTEM_COMMAND, "PATH=/usr/bin:/bin:/usr/X11R6/bin xf86config", + 0, 0 }, + { "Start", "Try to start the server up", + DMENU_SYSTEM_COMMAND, "PATH=/usr/bin:/bin:/usr/X11R6/bin startx", + 0, 0 }, + { NULL } } +}; + +DMenu MenuXF86Select = { +DMENU_NORMAL_TYPE, +"XFree86 3.1.1 \"Late\" Distribution", +"Please select the components you need from the XFree86 3.1.1\n\ +distribution. Select what you need from the basic components set\n\ +and at least one entry from the Server menu and the Font set menu\n", +"Press F1 for a sample sequence", +"XF86Select.hlp", +{ { "Core", "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 }, + { NULL } }, +}; + +DMenu MenuXF86SelectCore = { +DMENU_MULTIPLE_TYPE, +"XFree86 3.1.1 base distribution types", +"Please check off the primary XFree86 components you wish.\n\ +Those deemed most generally useful are already checked.", +NULL, +NULL, +{ { "*bin", "X client applications and shared libs [4MB].", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_BIN, 0 }, + { "*lib", "Data files needed at runtime [0.6MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_LIB, 0 }, + { "xicf", "Customizable xinit runtime configuration file [0.1MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_XINIT, 0 }, + { "xdcf", "Customizable xdm runtime configuration file [0.1MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_XDMCF, 0 }, + { "doc", "READMEs and XFree86 specific man pages [0.5MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_DOC, 0 }, + { "*man", "Man pages (except XFree86 specific ones in etc) [1.2MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_MAN, 0 }, + { "prog", "Programmer's header and library files [4MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_PROG, 0 }, + { "link", "X Server reconfiguration kit [7.8MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_LINK, 0 }, + { "pex", "PEX fonts and shared libs needed by PEX applications [0.5MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_PEX, 0 }, + { NULL } }, +}; + +DMenu MenuXF86SelectFonts = { +DMENU_MULTIPLE_TYPE, +"Font distribution selection.", +"Please check off the individual font distributions you wish to\n\ +install. At the minimum, you should certainly install the standard\n\ +75 DPI and misc fonts if you're also installing a server.", +NULL, +NULL, +{ { "*fnts", "Standard 75 DPI and miscellaneous fonts [3.6MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_MISC, 0 }, + { "f100", "100 DPI fonts [1.8MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_100, 0 }, + { "fscl", "Speedo and Type scalable fonts [1.6MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_SCALE, 0 }, + { "non", "Japanese, Chinese and other non-english fonts [3.3MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_NON, 0 }, + { "server", "Font server [0.3MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_SERVER, 0 }, + { NULL } }, +}; + +DMenu MenuXF86SelectServer = { +DMENU_MULTIPLE_TYPE, +"X Server selection.", +"Please check off the types of X servers you wish to\n\ +install. If you are unsure as which server will work\n\ +for your graphics card, it is recommended that try the\n\ +SVGA or VGA16 servers (the VGA16 and Mono servers are also\n\ +particularly well-suited to most LCD displays).", +"xservers.hlp", +"Press F1 for more information on the various X server types", +{ { "*SVGA", "Standard VGA or Super VGA display", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_SVGA, 0 }, + { "VGA16", "Standard 16 color VGA display", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_VGA16, 0 }, + { "Mono", "Standard Monochrome display", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_MONO, 0 }, + { "8514", "8-bit (256 color) IBM 8514 or compatible card.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_8514, 0 }, + { "AGX", "8-bit AGX card", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_AGX, 0 }, + { "Mch3", "8 and 16-bit (65K color) for ATI Mach32 card.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_MACH32, 0 }, + { "Mch8", "8-bit ATI Mach8 card.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_MACH8, 0 }, + { "P9K", "8, 16, and 24-bit color for Weitek P9000 based boards", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_P9000, 0 }, + { "S3", "8, 16 and 24-bit color for S3 based boards", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_S3, 0 }, + { "W32", "8-bit Color for ET4000/W32, /W32i and /W32p cards.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_W32, 0 }, + { "nest", "A nested server for testing purposes", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_NEST, 0 }, { NULL } }, }; @@ -339,10 +507,38 @@ manager later.", DMenu MenuInstallOptions = { DMENU_NORMAL_TYPE, "Choose Installation Options", -"blah blah", +"This menu controls how the FreeBSD installation will deal with various\n\ +error conditions, should they arise, and the degree to which you, the\n\ +user, will be prompted for options.", NULL, NULL, -{ { NULL } }, +{ { "Ftp Options", "Ftp options menu", + DMENU_SUBMENU, (void *)&MenuInstallFtpOptions, 0, 0 }, + { "NFS Secure", "NFS server talks only on a secure port", + DMENU_SET_VARIABLE, (void *)"nfsServerSecure=yes", 0, 0 }, + { "NFS Slow", "User is using a slow PC or ethernet card", + DMENU_SET_VARIABLE, (void *)"nfsSlowPC=yes", 0, 0 }, + { "Extra Debugging", "Toggle the extra debugging flag", + DMENU_SET_VARIABLE, (void *)"debug=yes", 0, 0 }, + { "No Debugging", "Turn the extra debugging flag off", + DMENU_SET_VARIABLE, (void *)"debug=no", 0, 0 }, + { NULL } }, +}; + +DMenu MenuInstallFtpOptions = { +DMENU_RADIO_TYPE, +"Choose Ftp Options", +"In case of ftp failure, how would you like this installation\n\ +to deal with it? You have one of several choices:", +NULL, +NULL, +{ { "*Ftp Retry", "On transfer failure, retry same host", + DMENU_SET_VARIABLE, (void *)"ftpRetryType=loop", 0, 0 }, + { "Ftp Reselect", "On transfer failure, ask for another host", + DMENU_SET_VARIABLE, (void *)"ftpRetryType=reselect", 0, 0 }, + { "Ftp Abort", "On transfer failure, abort installation", + DMENU_SET_VARIABLE, (void *)"ftpRetryType=abort", 0, 0 }, + { NULL } }, }; /* The main installation menu */ @@ -350,20 +546,21 @@ DMenu MenuInstall = { DMENU_NORMAL_TYPE, "Choose Installation Options", /* title */ "Before installation can continue, you need to specify a few items\n\ -of information regarding the location of the distribution and the kind\n\ -of installation you want to have (and where). There are also a number\n\ -of options you can specify in the Options menu. If you do not wish to\n\ -install FreeBSD at this time, you may select Cancel to leave this menu", +of information regarding the type of distribution you wish to have\n\ +and from where you wish to install it. There are also a number\n\ +of options you can specify in the Options menu which will determine\n\ +how . If you do not wish to install FreeBSD at this time, you may\n\ +select Cancel to leave this menu.", "You may also wish to read the install guide - press F1 to do so", "install.hlp", { { "Media", "Choose Installation media type", /* M */ - DMENU_SUBMENU, (void *)&MenuMedia, 0 }, + DMENU_SUBMENU, (void *)&MenuMedia, 0, 0 }, { "Type", "Choose the type of installation you want", /* T */ - DMENU_SUBMENU, (void *)&MenuInstallType, 0 }, + DMENU_SUBMENU, (void *)&MenuInstallType, 0, 0 }, { "Options", "Specify installation options", /* O */ - DMENU_SUBMENU, (void *)&MenuInstallOptions, 0 }, - { "Proceed", "Proceed with installation", /* P */ - DMENU_CANCEL, (void *)NULL, 0 }, + DMENU_SUBMENU, (void *)&MenuInstallOptions, 0, 0}, + { "Proceed", "Proceed with installation", /* P */ + DMENU_CANCEL, (void *)NULL, 0, 0 }, { NULL } }, }; diff --git a/usr.sbin/sade/sade.h b/usr.sbin/sade/sade.h index 1a29cc2..f71ea32 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.13 1995/05/08 10:20:56 jkh Exp $ + * $Id: sysinstall.h,v 1.14 1995/05/08 21:39:40 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -50,6 +50,7 @@ #include <unistd.h> #include <dialog.h> #include "libdisk.h" +#include "dist.h" /*** Defines ***/ @@ -58,49 +59,7 @@ #define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ #define DMENU_MULTIPLE_TYPE 0x4 /* Multiple choice menu */ #define DMENU_SELECTION_RETURNS 0x8 /* Select item then exit */ - -/* Bitfields for distributions - hope we never have more than 32! :-) */ -#define DIST_BIN 0x1 -#define DIST_GAMES 0x2 -#define DIST_MANPAGES 0x4 -#define DIST_PROFLIBS 0x8 -#define DIST_DICT 0x10 -#define DIST_SRC 0x20 -#define DIST_DES 0x40 -#define DIST_COMPAT1X 0x80 -#define DIST_XFREE86 0x100 -#define DIST_ALL 0xFFF - -/* Canned distribution sets */ -#define _DIST_DEVELOPER \ - (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_PROFLIBS | DIST_SRC) - -#define _DIST_XDEVELOPER \ - (_DIST_DEVELOPER | DIST_XFREE86) - -#define _DIST_USER \ - (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_COMPAT1X) - -#define _DIST_XUSER \ - (_DIST_USER | DIST_XFREE86) - - -/* Subtypes for SRC distribution */ -#define DIST_SRC_BASE 0x1 -#define DIST_SRC_GNU 0x2 -#define DIST_SRC_ETC 0x4 -#define DIST_SRC_GAMES 0x8 -#define DIST_SRC_INCLUDE 0x10 -#define DIST_SRC_LIB 0x20 -#define DIST_SRC_LIBEXEC 0x40 -#define DIST_SRC_LKM 0x80 -#define DIST_SRC_RELEASE 0x100 -#define DIST_SRC_SBIN 0x200 -#define DIST_SRC_SHARE 0x400 -#define DIST_SRC_SYS 0x800 -#define DIST_SRC_UBIN 0x1000 -#define DIST_SRC_USBIN 0x2000 -#define DIST_SRC_ALL 0xFFFF +#define DMENU_CALL_FIRST 0x10 /* In multiple, use one handler */ /* variable limits */ #define VAR_NAME_MAX 128 @@ -109,9 +68,6 @@ /* device limits */ #define DEV_NAME_MAX 128 -/* handy */ -#define ONE_MEG 1048576 - /*** Types ***/ typedef unsigned int Boolean; @@ -123,6 +79,7 @@ typedef enum { DMENU_SYSTEM_COMMAND, /* Run shell commmand */ DMENU_SYSTEM_COMMAND_BOX, /* Same as above, but in prgbox */ DMENU_SET_VARIABLE, /* Set an environment/system var */ + DMENU_SET_FLAG, /* Set flag in an unsigned int */ DMENU_CALL, /* Call back a C function */ DMENU_CANCEL, /* Cancel out of this menu */ DMENU_NOP, /* Do nothing special for item */ @@ -133,6 +90,7 @@ typedef struct _dmenuItem { char *prompt; /* Our prompt */ DMenuItemType type; /* What type of item we are */ void *ptr; /* Generic data ptr */ + u_long parm; /* Parameter for above */ Boolean disabled; /* Are we temporarily disabled? */ } DMenuItem; @@ -200,6 +158,9 @@ extern Boolean OnVTY; /* On a syscons VTY? */ extern Variable *VarHead; /* The head of the variable chain */ extern unsigned int Dists; /* Which distributions we want */ extern unsigned int SrcDists; /* Which src distributions we want */ +extern unsigned int XF86Dists;/* Which XFree86 dists we want */ +extern unsigned int XF86ServerDists; /* The XFree86 servers we want */ +extern unsigned int XF86FontDists; /* The XFree86 fonts we want */ extern struct disk *Disks[]; /* The disks we're working on */ /*** Prototypes ***/ @@ -210,6 +171,11 @@ extern void command_sort(void); extern void command_execute(void); extern void command_add(char *key, char *fmt, ...); +/* decode.c */ +extern DMenuItem *decode(DMenu *menu, char *name); +extern Boolean dispatch(DMenuItem *tmp, char *name); +extern Boolean decode_and_dispatch_multiple(DMenu *menu, char *names); + /* devices.c */ extern struct disk *device_slice_disk(struct disk *d); extern DMenu *device_create_disk_menu(DMenu *menu, Device **rdevs, int (*hook)()); @@ -230,6 +196,8 @@ extern int distSetUser(char *str); extern int distSetXUser(char *str); extern int distSetMinimum(char *str); extern int distSetEverything(char *str); +extern int distSetSrc(char *str); +extern void distExtractAll(void); /* dmenu.c */ extern void dmenuOpen(DMenu *menu, int *choice, int *scroll, @@ -257,17 +225,17 @@ extern void lang_set_Spanish(char *str); extern void lang_set_Swedish(char *str); /* makedevs.c (auto-generated) */ -extern const char termcap_vt100[]; -extern const char termcap_cons25[]; -extern const char termcap_cons25_m[]; -extern const char termcap_cons25r[]; -extern const char termcap_cons25r_m[]; -extern const char termcap_cons25l1[]; -extern const char termcap_cons25l1_m[]; -extern const u_char font_iso_8x14[]; -extern const u_char font_cp850_8x14[]; -extern const u_char font_koi8_r_8x14[]; -extern const u_char koi8_r2cp866[]; +extern const char termcap_vt100[]; +extern const char termcap_cons25[]; +extern const char termcap_cons25_m[]; +extern const char termcap_cons25r[]; +extern const char termcap_cons25r_m[]; +extern const char termcap_cons25l1[]; +extern const char termcap_cons25l1_m[]; +extern const u_char font_iso_8x14[]; +extern const u_char font_cp850_8x14[]; +extern const u_char font_koi8_r_8x14[]; +extern const u_char koi8_r2cp866[]; /* media.c */ extern int mediaSetCDROM(char *str); diff --git a/usr.sbin/sysinstall/Makefile b/usr.sbin/sysinstall/Makefile index 4aa36cc..24baf10 100644 --- a/usr.sbin/sysinstall/Makefile +++ b/usr.sbin/sysinstall/Makefile @@ -8,7 +8,7 @@ SRCS= globals.c main.c dmenu.c menus.c \ misc.c msg.c system.c install.c \ termcap.c makedevs.c media.c variable.c \ devices.c dist.c lang.c wizard.c \ - disks.c command.c + disks.c command.c decode.c CFLAGS += -Wall -g -I${.CURDIR}/../libdisk diff --git a/usr.sbin/sysinstall/dist.c b/usr.sbin/sysinstall/dist.c index 90b592d..1453cfd 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.1 1995/05/04 19:48:10 jkh Exp $ + * $Id: dist.c,v 1.2 1995/05/08 21:39:34 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -45,6 +45,11 @@ unsigned int Dists; unsigned int SrcDists; +unsigned int XF86Dists; +unsigned int XF86ServerDists; +unsigned int XF86FontDists; + +static int distSetXF86(char *str); int distSetDeveloper(char *str) @@ -59,6 +64,7 @@ distSetXDeveloper(char *str) { Dists = _DIST_XDEVELOPER; SrcDists = DIST_SRC_ALL; + distSetXF86(NULL); return 0; } @@ -73,6 +79,7 @@ int distSetXUser(char *str) { Dists = _DIST_XUSER; + distSetXF86(NULL); return 0; } @@ -88,37 +95,121 @@ distSetEverything(char *str) { Dists = DIST_ALL; SrcDists = DIST_SRC_ALL; + distSetXF86(NULL); + return 0; +} + +int +distSetSrc(char *str) +{ + extern DMenu MenuSrcDistributions; + int choice, scroll, curr, max; + + choice = scroll = curr = max; + dmenuOpen(&MenuSrcDistributions, &choice, &scroll, &curr, &max); + if (SrcDists) + Dists |= DIST_SRC; + return 0; +} + +static int +distSetXF86(char *str) +{ + extern DMenu MenuXF86; + int choice, scroll, curr, max; + + choice = scroll = curr = max; + dmenuOpen(&MenuXF86, &choice, &scroll, &curr, &max); return 0; } -struct { +static struct _dist { char *my_name; unsigned int my_bit; } DistTable[] = { -{ "bin", DIST_BIN }, -{ "games", DIST_GAMES }, -{ "manpages", DIST_MANPAGES }, -{ "proflibs", DIST_PROFLIBS }, -{ "dict", DIST_DICT }, -{ "src", DIST_SRC }, -{ "des", DIST_DES }, -{ "compat1x", DIST_COMPAT1X }, -{ "xf86311l", DIST_XFREE86 }, -{ NULL, 0 }, +{ "bin", DIST_BIN }, +{ "games", DIST_GAMES }, +{ "manpages", DIST_MANPAGES }, +{ "proflibs", DIST_PROFLIBS }, +{ "dict", DIST_DICT }, +{ "src", DIST_SRC }, +{ "des", DIST_DES }, +{ "compat1x", DIST_COMPAT1X }, +{ "xf86311", DIST_XF86 }, +{ NULL, 0 }, }; -Boolean +static struct _dist SrcDistTable[] = { +{ "base", DIST_SRC_BASE }, +{ "gnu", DIST_SRC_GNU }, +{ "etc", DIST_SRC_ETC }, +{ "games", DIST_SRC_GAMES }, +{ "include", DIST_SRC_INCLUDE}, +{ "lib", DIST_SRC_LIB }, +{ "libexec", DIST_SRC_LIBEXEC}, +{ "lkm", DIST_SRC_LKM }, +{ "release", DIST_SRC_RELEASE}, +{ "sbin", DIST_SRC_SBIN }, +{ "share", DIST_SRC_SHARE }, +{ "sys", DIST_SRC_SYS }, +{ "ubin", DIST_SRC_UBIN }, +{ "usbin", DIST_SRC_USBIN }, +{ NULL, 0 }, +}; + +static struct _dist XFree86DistTable[] = { +{ "bin", DIST_XF86_BIN }, +{ "lib", DIST_XF86_LIB }, +{ "doc", DIST_XF86_DOC }, +{ "man", DIST_XF86_MAN }, +{ "prog", DIST_XF86_PROG }, +{ "link", DIST_XF86_LINK }, +{ "pex", DIST_XF86_PEX }, +{ "lbx", DIST_XF86_LBX }, +{ "xicf", DIST_XF86_XINIT }, +{ "xdmcf", DIST_XF86_XDMCF }, +{ NULL, 0 }, +}; + +static struct _dist XFree86ServerDistTable[] = { +{ "8514", DIST_XF86_SERVER_8514 }, +{ "AGX", DIST_XF86_SERVER_AGX }, +{ "Mch3", DIST_XF86_SERVER_MACH32 }, +{ "Mch8", DIST_XF86_SERVER_MACH8 }, +{ "Mono", DIST_XF86_SERVER_MONO }, +{ "P9K", DIST_XF86_SERVER_P9000 }, +{ "S3", DIST_XF86_SERVER_S3 }, +{ "SVGA", DIST_XF86_SERVER_SVGA }, +{ "VGA16", DIST_XF86_SERVER_VGA16 }, +{ "W32", DIST_XF86_SERVER_W32 }, +{ "nest", DIST_XF86_SERVER_NEST }, +{ NULL, 0 }, +}; + +static struct _dist XFree86FontDistTable[] = { +{ "fnts", DIST_XF86_FONTS_MISC }, +{ "f100", DIST_XF86_FONTS_100 }, +{ "fscl", DIST_XF86_FONTS_SCALE }, +{ "fnon", DIST_XF86_FONTS_NON }, +{ "fsrv", DIST_XF86_FONTS_SERVER }, +}; + +static Boolean dist_extract(char *name) { - int fd; - + if (!strcmp(name, "src")) { + } + else if (!strcmp(name, "xf86311l")) { + } + else { + } return FALSE; } void distExtractAll(void) { - int i, fd; + int i; while (Dists) { for (i = 0; DistTable[i].my_name; i++) { diff --git a/usr.sbin/sysinstall/dist.h b/usr.sbin/sysinstall/dist.h new file mode 100644 index 0000000..2296a3f --- /dev/null +++ b/usr.sbin/sysinstall/dist.h @@ -0,0 +1,82 @@ +#ifndef _DIST_H_INCLUDE +#define _DIST_H_INCLUDE + +/* Bitfields for distributions - hope we never have more than 32! :-) */ +#define DIST_BIN 0x0001 +#define DIST_GAMES 0x0002 +#define DIST_MANPAGES 0x0004 +#define DIST_PROFLIBS 0x0008 +#define DIST_DICT 0x0010 +#define DIST_SRC 0x0020 +#define DIST_DES 0x0040 +#define DIST_INFO 0x0080 +#define DIST_COMPAT1X 0x0100 +#define DIST_XF86 0x0200 +#define DIST_COMMERCIAL 0x0400 +#define DIST_ALL 0x0FFF + +/* Canned distribution sets */ +#define _DIST_DEVELOPER \ + (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_PROFLIBS | DIST_SRC) + +#define _DIST_XDEVELOPER \ + (_DIST_DEVELOPER | DIST_XF86) + +#define _DIST_USER \ + (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_COMPAT1X) + +#define _DIST_XUSER \ + (_DIST_USER | DIST_XF86) + + +/* Subtypes for SRC distribution */ +#define DIST_SRC_BASE 0x0001 +#define DIST_SRC_GNU 0x0002 +#define DIST_SRC_ETC 0x0004 +#define DIST_SRC_GAMES 0x0008 +#define DIST_SRC_INCLUDE 0x0010 +#define DIST_SRC_LIB 0x0020 +#define DIST_SRC_LIBEXEC 0x0040 +#define DIST_SRC_LKM 0x0080 +#define DIST_SRC_RELEASE 0x0100 +#define DIST_SRC_SBIN 0x0200 +#define DIST_SRC_SHARE 0x0400 +#define DIST_SRC_SYS 0x0800 +#define DIST_SRC_UBIN 0x1000 +#define DIST_SRC_USBIN 0x2000 +#define DIST_SRC_XF86 0x4000 +#define DIST_SRC_ALL 0xFFFF + +/* Subtypes for XFree86 distribution */ +#define DIST_XF86_BIN 0x0001 +#define DIST_XF86_LIB 0x0004 +#define DIST_XF86_DOC 0x0008 +#define DIST_XF86_MAN 0x0010 +#define DIST_XF86_PROG 0x0020 +#define DIST_XF86_LINK 0x0040 +#define DIST_XF86_PEX 0x0080 +#define DIST_XF86_LBX 0x0100 +#define DIST_XF86_SERVER 0x0200 +#define DIST_XF86_SERVER_8514 0x0001 +#define DIST_XF86_SERVER_AGX 0x0002 +#define DIST_XF86_SERVER_MACH32 0x0004 +#define DIST_XF86_SERVER_MACH8 0x0008 +#define DIST_XF86_SERVER_MONO 0x0010 +#define DIST_XF86_SERVER_P9000 0x0020 +#define DIST_XF86_SERVER_S3 0x0040 +#define DIST_XF86_SERVER_SVGA 0x0080 +#define DIST_XF86_SERVER_VGA16 0x0100 +#define DIST_XF86_SERVER_W32 0x0200 +#define DIST_XF86_SERVER_NEST 0x0400 +#define DIST_XF86_XINIT 0x0400 +#define DIST_XF86_XDMCF 0x0800 +#define DIST_XF86_FONTS 0x1000 +#define DIST_XF86_FONTS_MISC 0x0001 +#define DIST_XF86_FONTS_100 0x0002 +#define DIST_XF86_FONTS_SCALE 0x0004 +#define DIST_XF86_FONTS_NON 0x0008 +#define DIST_XF86_FONTS_SERVER 0x0010 +#define DIST_XF86_ALL 0xFFFF + +#endif +/* _DIST_H_INCLUDE */ diff --git a/usr.sbin/sysinstall/dmenu.c b/usr.sbin/sysinstall/dmenu.c index 36bc88c..af52aca 100644 --- a/usr.sbin/sysinstall/dmenu.c +++ b/usr.sbin/sysinstall/dmenu.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: dmenu.c,v 1.3 1995/04/29 19:33:00 jkh Exp $ + * $Id: dmenu.c,v 1.4 1995/05/01 21:56:20 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -117,15 +117,19 @@ dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max) } dialog_clear(); if (!rval) { - if (menu->options & DMENU_MULTIPLE_TYPE) - tmp = &(menu->items[0]); + if (menu->options & DMENU_MULTIPLE_TYPE) { + if (menu->options & DMENU_CALL_FIRST) + tmp = &(menu->items[0]); + else { + if (decode_and_dispatch_multiple(menu, result) || + menu->options & DMENU_SELECTION_RETURNS) { + items_free(nitems, curr, max); + return; + } + } + } else { - for (tmp = menu->items; tmp->title; tmp++) - if (!strcmp(result, - (*tmp->title == '*') ? tmp->title + 1 : - tmp->title)) - break; - if (!tmp->title) + if ((tmp = decode(menu, result)) == NULL) msgFatal("Menu item `%s' not found??", result); } } @@ -135,61 +139,7 @@ dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max) items_free(nitems, curr, max); return; } - switch (tmp->type) { - /* User whapped ESC twice and wants a sub-shell */ - case DMENU_SHELL_ESCAPE: - systemShellEscape(); - break; - - /* We want to simply display a file */ - case DMENU_DISPLAY_FILE: - systemDisplayFile((char *)tmp->ptr); - break; - - /* It's a sub-menu; recurse on it */ - case DMENU_SUBMENU: { - int choice, scroll, curr, max; - - choice = scroll = curr = max = 0; - dmenuOpen((DMenu *)tmp->ptr, &choice, &scroll, &curr, &max); - break; - } - - /* Execute it as a system command */ - case DMENU_SYSTEM_COMMAND: - (void)systemExecute((char *)tmp->ptr); - break; - - /* Same as above, but execute it in a prgbox */ - case DMENU_SYSTEM_COMMAND_BOX: - use_helpfile(NULL); - use_helpline("Select OK to dismiss this dialog"); - dialog_prgbox(tmp->title, (char *)tmp->ptr, 22, 76, 1, 1); - dialog_clear(); - break; - - case DMENU_CALL: - if (((int (*)())tmp->ptr)(result)) { - items_free(nitems, curr, max); - return; - } - break; - - case DMENU_CANCEL: - items_free(nitems, curr, max); - return; - - case DMENU_SET_VARIABLE: - variable_set((char *)tmp->ptr); - msgInfo("Setting option %s", tmp->ptr); - break; - - default: - msgFatal("Don't know how to deal with menu type %d", tmp->type); - } - - /* Did the user want to make this a single-selection menu? */ - if (menu->options & DMENU_SELECTION_RETURNS) { + if (dispatch(tmp) || menu->options & DMENU_SELECTION_RETURNS) { items_free(nitems, curr, max); return; } diff --git a/usr.sbin/sysinstall/menus.c b/usr.sbin/sysinstall/menus.c index 57dd0ab..e6db794 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.8 1995/05/05 23:47:43 jkh Exp $ + * $Id: menus.c,v 1.9 1995/05/08 10:20:54 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -57,6 +57,12 @@ extern DMenu MenuMedia; extern DMenu MenuInstallType; extern DMenu MenuInstallOptions; extern DMenu MenuDistributions; +extern DMenu MenuXF86Select; +extern DMenu MenuXF86SelectCore; +extern DMenu MenuXF86SelectServer; +extern DMenu MenuXF86SelectFonts; +extern DMenu MenuXF86; +extern DMenu MenuInstallFtpOptions; /* The initial installation menu */ DMenu MenuInitial = { @@ -69,13 +75,13 @@ option by pressing enter. If you'd like a shell, press ESC", /* 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, (void *)"usage.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"usage.hlp", 0, 0 }, { "Doc", "More detailed documentation on FreeBSD.", /* D */ - DMENU_SUBMENU, (void *)&MenuDocumentation, 0 }, + DMENU_SUBMENU, (void *)&MenuDocumentation, 0, 0 }, { "Lang", "Select natural language options.", /* L */ - DMENU_SUBMENU, (void *)&MenuLanguage, 0 }, + DMENU_SUBMENU, (void *)&MenuLanguage, 0, 0 }, { "Install", "Begin installation", /* I */ - DMENU_CALL, (void *)installCustom, 0 }, + DMENU_CALL, (void *)installCustom, 0, 0 }, { NULL } }, }; @@ -92,18 +98,19 @@ answers in the FAQ.", "Confused? Press F1 for help.", "usage.hlp", /* help file */ { { "README", "Read this for a general description of FreeBSD", /* R */ - DMENU_DISPLAY_FILE, (void *)"readme.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"readme.hlp", 0, 0 }, { "Hardware", "The FreeBSD survival guide for PC hardware.", /* H */ - DMENU_DISPLAY_FILE, (void *)"hardware.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"hardware.hlp", 0, 0 }, { "Install", "A step-by-step guide to installing FreeBSD.", /* I */ - DMENU_DISPLAY_FILE, (void *)"install.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"install.hlp", 0, 0 }, { "FAQ", "Frequently Asked Questions about FreeBSD.", /* F */ - DMENU_DISPLAY_FILE, (void *)"faq.hlp", 0 }, + DMENU_DISPLAY_FILE, (void *)"faq.hlp", 0, 0 }, { NULL } }, }; -/* The language selection menu */ /* + * The language selection menu. + * * Note: The RADIO menus use a slightly different syntax. If an item * name starts with `*', it's considered to be "ON" by default, * otherwise off. @@ -116,31 +123,32 @@ 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.", /* prompt */ +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, (void *)lang_set_Danish, 0 }, + DMENU_CALL, (void *)lang_set_Danish, 0, 0 }, { "Dutch", "Dutch language and character set (ISO-8859-1)", /* D */ - DMENU_CALL, (void *)lang_set_Dutch, 0 }, + DMENU_CALL, (void *)lang_set_Dutch, 0, 0 }, { "English", "English language (system default)", /* E */ - DMENU_CALL, (void *)lang_set_English, 0 }, + DMENU_CALL, (void *)lang_set_English, 0, 0 }, { "French", "French language and character set (ISO-8859-1)", /* F */ - DMENU_CALL, (void *)lang_set_French, 0 }, + DMENU_CALL, (void *)lang_set_French, 0, 0 }, { "German", "German language and character set (ISO-8859-1)", /* G */ - DMENU_CALL, (void *)lang_set_German, 0 }, + DMENU_CALL, (void *)lang_set_German, 0, 0 }, { "Italian", "Italian language and character set (ISO-8859-1)", /* I */ - DMENU_CALL, (void *)lang_set_Italian, 0 }, + DMENU_CALL, (void *)lang_set_Italian, 0, 0 }, { "Japanese", "Japanese language and default character set (romaji)",/* J */ - DMENU_CALL, (void *)lang_set_Japanese, 0 }, + DMENU_CALL, (void *)lang_set_Japanese, 0, 0 }, { "Norwegian", "Norwegian language and character set (ISO-8859-1)", /* N */ - DMENU_CALL, (void *)lang_set_Norwegian, 0 }, + DMENU_CALL, (void *)lang_set_Norwegian, 0, 0 }, { "Russian", "Russian language and character set (cp866-8x14)", /* R */ - DMENU_CALL, (void *)lang_set_Russian, 0 }, + DMENU_CALL, (void *)lang_set_Russian, 0, 0 }, { "Spanish", "Spanish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, (void *)lang_set_Spanish, 0 }, + DMENU_CALL, (void *)lang_set_Spanish, 0, 0 }, { "Swedish", "Swedish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, (void *)lang_set_Swedish, 0 }, + DMENU_CALL, (void *)lang_set_Swedish, 0, 0 }, { NULL } }, }; @@ -150,20 +158,20 @@ DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS, "FreeBSD can be installed directly from a CDROM containing a valid\n\ FreeBSD 2.0.5 distribution. If you're seeing this menu, it's because\n\ your CDROM drive was not properly auto-detected, or you did not launch\n\ -this installation from the CD under DOS or Windows. If you think you're\n\ +this installation from the CD under DOS or Windows. If you think you are\n seeing this dialog in error, you may wish to reboot FreeBSD with the\n\ --c boot flag (.. boot: /kernel -c) and check that your hardware and\n -the kernel agree on reasonable values.", +-c boot flag (.. boot: /kernel -c) and check that your hardware and\n\ +the kernel agree on reasonable values.", "Press F1 for more information on CDROM support", "media_cdrom.hlp", { { "Matsushita", "Panasonic \"Sound Blaster\" CDROM.", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/matcd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/matcd0a", 0, 0 }, { "Mitsumi", "Mitsumi FX-001 series drive (not IDE)", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/mcd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/mcd0a", 0, 0 }, { "SCSI", "SCSI CDROM drive attached to supported SCSI controller", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/cd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/cd0a", 0, 0 }, { "Sony", "Sony CDU31/33A or compatible CDROM drive", - DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/scd0a", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=/dev/scd0a", 0, 0 }, { NULL } }, }; @@ -179,59 +187,59 @@ If the first site selected doesn't respond, try one of the alternates.", "Select a site that's close!", "media_ftp.hlp", { { "Primary", "ftp.freebsd.org", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.freebsd.org/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.freebsd.org/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Secondary", "freefall.cdrom.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://freefall.cdrom.com/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://freefall.cdrom.com/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Australia", "ftp.physics.usyd.edu.au", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.physics.usyd.edu.au/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.physics.usyd.edu.au/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Finland", "nic.funet.fi", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://nic.funet.fi/pub/unix/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://nic.funet.fi/pub/unix/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "France", "ftp.ibp.fr", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ibp.fr/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ibp.fr/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Germany", "ftp.uni-duisburg.de", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.uni-duisburg.de/pub/unix/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.uni-duisburg.de/pub/unix/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Israel", "orgchem.weizmann.ac.il", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-2.0.5-ALPHA", 0, 0 }, { "Japan", "ftp.sra.co.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.sra.co.jp/pub/os/FreeBSD/distribution/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.sra.co.jp/pub/os/FreeBSD/distribution/2.0.5-ALPHA", 0, 0 }, { "Japan-2", "ftp.mei.co.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-3", "ftp.waseda.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.waseda.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.waseda.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-4", "ftp.pu-toyama.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-5", "ftpsv1.u-aizu.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Japan-6", "tutserver.tutcc.tut.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://tutserver.tutcc.tut.ac.jp/FreeBSD/FreeBSD-2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://tutserver.tutcc.tut.ac.jp/FreeBSD/FreeBSD-2.0.5-ALPHA", 0, 0 }, { "Japan-7", "ftp.ee.uec.ac.jp", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ee.uec.ac.jp/pub/os/FreeBSD.other/FreeBSD-2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.ee.uec.ac.jp/pub/os/FreeBSD.other/FreeBSD-2.0.5-ALPHA", 0, 0 }, { "Korea", "ftp.cau.ac.kr", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.cau.ac.kr/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.cau.ac.kr/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Netherlands", "ftp.nl.net", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nl.net/pub/os/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nl.net/pub/os/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Russia", "ftp.kiae.su", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.kiae.su/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.kiae.su/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Sweden", "ftp.luth.se", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.luth.se/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.luth.se/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Taiwan", "netbsd.csie.nctu.edu.tw", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "Thailand", "ftp.nectec.or.th", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nectec.or.th/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.nectec.or.th/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "UK", "ftp.demon.co.uk", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "UK-2", "src.doc.ic.ac.uk", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "UK-3", "unix.hensa.ac.uk", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA", "ref.tfs.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ref.tfs.com/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ref.tfs.com/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA-2", "ftp.dataplex.net", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.dataplex.net/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.dataplex.net/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA-3", "kryten.atinc.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://kryten.atinc.com/pub/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://kryten.atinc.com/pub/FreeBSD/2.0.5-ALPHA", 0, 0 }, { "USA-4", "ftp.neosoft.com", - DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.neosoft.com/systems/FreeBSD/2.0.5-ALPHA", 0 }, + DMENU_SET_VARIABLE, (void *)"mediaDevice=ftp://ftp.neosoft.com/systems/FreeBSD/2.0.5-ALPHA", 0, 0 }, { NULL } } }; @@ -243,22 +251,21 @@ DMENU_NORMAL_TYPE, 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. Please also note that the DES distribution is NOT available on \n\ -CDROM due to U.S. export restrictions.", +method.", "Press F1 for more information on the various media types", "media.hlp", { { "CDROM", "Install from a FreeBSD CDROM", - DMENU_CALL, (void *)mediaSetCDROM, 0 }, - { "FLOPPY", "Install from a floppy disk set", - DMENU_CALL, (void *)mediaSetFloppy, 0 }, + DMENU_CALL, (void *)mediaSetCDROM, 0, 0 }, + { "Floppy", "Install from a floppy disk set", + DMENU_CALL, (void *)mediaSetFloppy, 0, 0 }, { "DOS", "Install from a DOS partition", - DMENU_CALL, (void *)mediaSetDOS, 0 }, - { "TAPE", "Install from SCSI or QIC tape", - DMENU_CALL, (void *)mediaSetTape, 0 }, + DMENU_CALL, (void *)mediaSetDOS, 0, 0 }, + { "Tape", "Install from SCSI or QIC tape", + DMENU_CALL, (void *)mediaSetTape, 0, 0 }, { "FTP", "Install from an Internet FTP server", - DMENU_CALL, (void *)mediaSetFTP, 0 }, - { "FILESYSTEM", "Install from a UFS or NFS mounted distribution", - DMENU_CALL, (void *)mediaSetFS, 0 }, + DMENU_CALL, (void *)mediaSetFTP, 0, 0 }, + { "File System", "Install from a UFS or NFS mounted distribution", + DMENU_CALL, (void *)mediaSetFS, 0, 0 }, { NULL } }, }; @@ -266,26 +273,26 @@ CDROM due to U.S. export restrictions.", DMenu MenuInstallType = { DMENU_NORMAL_TYPE, "Choose Installation Type", -"As a convenience, we provide several `canned' installation types. \ -These pick what we consider to be the most reasonable defaults for the \ -type of system in question. If you would prefer to pick and choose \ +"As a convenience, we provide several `canned' installation types.\n\ +These pick what we consider to be the most reasonable defaults for the\n\ +type of system in question. If you would prefer to pick and choose\n\ the list of distributions yourself, simply select `custom'.", "Press F1 for more information on the various distributions", "dist_types.hlp", { { "Developer", "Includes full sources, binaries and doc but no games.", - DMENU_CALL, (void *)distSetDeveloper, 0 }, + DMENU_CALL, (void *)distSetDeveloper, 0, 0 }, { "X-Developer", "Same as above, but includes XFree86.", - DMENU_CALL, (void *)distSetXDeveloper, 0 }, + DMENU_CALL, (void *)distSetXDeveloper, 0, 0 }, { "User", "General user. Binaries and doc but no sources.", - DMENU_CALL, (void *)distSetUser, 0 }, + DMENU_CALL, (void *)distSetUser, 0, 0 }, { "X-User", "Same as above, but includes XFree86.", - DMENU_CALL, (void *)distSetXUser, 0 }, + DMENU_CALL, (void *)distSetXUser, 0, 0 }, { "Minimal", "The smallest configuration possible.", - DMENU_CALL, (void *)distSetMinimum, 0 }, + DMENU_CALL, (void *)distSetMinimum, 0, 0 }, { "Everything", "The entire source and binary distribution.", - DMENU_CALL, (void *)distSetEverything, 0 }, + DMENU_CALL, (void *)distSetEverything, 0, 0 }, { "Custom", "Specify your own distribution set", - DMENU_SUBMENU, (void *)&MenuDistributions, 0 }, + DMENU_SUBMENU, (void *)&MenuDistributions, 0, 0 }, { NULL } }, }; @@ -296,27 +303,188 @@ DMENU_MULTIPLE_TYPE, "Press F1 for a more complete description of these distributions.", "distribution_types.hlp", { { "*bin", "Binary base distribution (required)", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_BIN, 0 }, { "commercial", "Commercial demos and shareware", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_COMMERCIAL, 0 }, { "compat1x", "FreeBSD 1.x binary compatability package", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_COMPAT1X, 0 }, { "DES", "DES encryption code and sources", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_DES, 0 }, { "dict", "Spelling checker disctionary files", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_DICT, 0 }, { "games", "Games and other amusements (non-commercial)", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_GAMES, 0 }, { "info", "GNU info files", - DMENU_NOP, NULL, 0 }, - { "man", "System manual pages - strongly recommended", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_INFO, 0 }, + { "*man", "System manual pages - strongly recommended", + DMENU_SET_FLAG, (void *)&Dists, DIST_MANPAGES, 0 }, { "proflibs", "Profiled versions of the libraries", - DMENU_NOP, NULL, 0 }, + DMENU_SET_FLAG, (void *)&Dists, DIST_PROFLIBS, 0 }, { "src", "Sources for everything but DES", - DMENU_NOP, NULL, 0 }, - { "XFree86", "The XFree86 3.1.1 distribution", - DMENU_NOP, NULL, 0 }, + DMENU_CALL, (void *)distSetSrc, 0 }, + { "XFree86", "The XFree86 3.1.1L distribution", + DMENU_SUBMENU, (void *)&MenuXF86, 0 }, + { NULL } }, +}; + +DMenu MenuSrcDistributions = { +DMENU_MULTIPLE_TYPE, +"Select the sub-components of src you wish to install.", +"Please check off those portions of the FreeBSD source tree\n\ +you wish to install. A brief description of each source\n\ +hierarchy is contained in parenthesis below.", +"Press F1 for a more complete description of distributions.", +"distribution_types.hlp", +{ { "base", "Base src directory (top-level files in /usr/src)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_BASE, 0 }, + { "gnu", "/usr/src/gnu (user software from the GNU Project)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_GNU, 0 }, + { "etc", "/usr/src/etc (miscellaneous system files)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_ETC, 0 }, + { "games", "/usr/src/games (games)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_GAMES, 0 }, + { "include", "/usr/src/include (header files)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_INCLUDE, 0 }, + { "lib", "/usr/src/lib (system libraries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_LIB, 0 }, + { "libexec", "/usr/src/libexec (various system programs)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_LIBEXEC, 0 }, + { "lkm", "/usr/src/lkm (Loadable Kernel Modules)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_LKM, 0 }, + { "release", "/usr/src/release (release-generation tools)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_RELEASE, 0 }, + { "sbin", "/usr/src/sbin (system binaries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_SBIN, 0 }, + { "share", "/usr/src/share (documents and shared files)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_SHARE, 0 }, + { "sys", "/usr/src/sys (FreeBSD kernel)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_SYS, 0 }, + { "ubin", "/usr/src/usr.bin (user binaries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_UBIN, 0 }, + { "usbin", "/usr/src/usr.sbin (aux system binaries)", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_USBIN, 0 }, + { "XFree86", "XFree86 3.1.1L source + contrib distribution", + DMENU_SET_FLAG, (void *)&SrcDists, DIST_SRC_XF86, 0 }, + { NULL } }, +}; + +DMenu MenuXF86 = { +DMENU_NORMAL_TYPE, +"XFree86 3.1.1u1 Distribution", +"Welcome to the XFree86 3.1.1u1 distribution from\n\ +The XFree86 Project, Inc. Recommended sequence: Select\n\ +desired release components, configure, start it up (optional!)", +"Press F1 to read the XFree86 release notes for FreeBSD", +"XFree86.hlp", +{ { "Select", "Select and load components of the XFree86 distribution", + DMENU_SUBMENU, &MenuXF86Select, 0, 0 }, + { "Configure", "Configure an installed XFree86 distribution", + DMENU_SYSTEM_COMMAND, "PATH=/usr/bin:/bin:/usr/X11R6/bin xf86config", + 0, 0 }, + { "Start", "Try to start the server up", + DMENU_SYSTEM_COMMAND, "PATH=/usr/bin:/bin:/usr/X11R6/bin startx", + 0, 0 }, + { NULL } } +}; + +DMenu MenuXF86Select = { +DMENU_NORMAL_TYPE, +"XFree86 3.1.1 \"Late\" Distribution", +"Please select the components you need from the XFree86 3.1.1\n\ +distribution. Select what you need from the basic components set\n\ +and at least one entry from the Server menu and the Font set menu\n", +"Press F1 for a sample sequence", +"XF86Select.hlp", +{ { "Core", "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 }, + { NULL } }, +}; + +DMenu MenuXF86SelectCore = { +DMENU_MULTIPLE_TYPE, +"XFree86 3.1.1 base distribution types", +"Please check off the primary XFree86 components you wish.\n\ +Those deemed most generally useful are already checked.", +NULL, +NULL, +{ { "*bin", "X client applications and shared libs [4MB].", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_BIN, 0 }, + { "*lib", "Data files needed at runtime [0.6MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_LIB, 0 }, + { "xicf", "Customizable xinit runtime configuration file [0.1MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_XINIT, 0 }, + { "xdcf", "Customizable xdm runtime configuration file [0.1MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_XDMCF, 0 }, + { "doc", "READMEs and XFree86 specific man pages [0.5MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_DOC, 0 }, + { "*man", "Man pages (except XFree86 specific ones in etc) [1.2MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_MAN, 0 }, + { "prog", "Programmer's header and library files [4MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_PROG, 0 }, + { "link", "X Server reconfiguration kit [7.8MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_LINK, 0 }, + { "pex", "PEX fonts and shared libs needed by PEX applications [0.5MB]", + DMENU_SET_FLAG, (void *)&XF86Dists, DIST_XF86_PEX, 0 }, + { NULL } }, +}; + +DMenu MenuXF86SelectFonts = { +DMENU_MULTIPLE_TYPE, +"Font distribution selection.", +"Please check off the individual font distributions you wish to\n\ +install. At the minimum, you should certainly install the standard\n\ +75 DPI and misc fonts if you're also installing a server.", +NULL, +NULL, +{ { "*fnts", "Standard 75 DPI and miscellaneous fonts [3.6MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_MISC, 0 }, + { "f100", "100 DPI fonts [1.8MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_100, 0 }, + { "fscl", "Speedo and Type scalable fonts [1.6MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_SCALE, 0 }, + { "non", "Japanese, Chinese and other non-english fonts [3.3MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_NON, 0 }, + { "server", "Font server [0.3MB]", + DMENU_SET_FLAG, (void *)&XF86FontDists, DIST_XF86_FONTS_SERVER, 0 }, + { NULL } }, +}; + +DMenu MenuXF86SelectServer = { +DMENU_MULTIPLE_TYPE, +"X Server selection.", +"Please check off the types of X servers you wish to\n\ +install. If you are unsure as which server will work\n\ +for your graphics card, it is recommended that try the\n\ +SVGA or VGA16 servers (the VGA16 and Mono servers are also\n\ +particularly well-suited to most LCD displays).", +"xservers.hlp", +"Press F1 for more information on the various X server types", +{ { "*SVGA", "Standard VGA or Super VGA display", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_SVGA, 0 }, + { "VGA16", "Standard 16 color VGA display", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_VGA16, 0 }, + { "Mono", "Standard Monochrome display", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_MONO, 0 }, + { "8514", "8-bit (256 color) IBM 8514 or compatible card.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_8514, 0 }, + { "AGX", "8-bit AGX card", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_AGX, 0 }, + { "Mch3", "8 and 16-bit (65K color) for ATI Mach32 card.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_MACH32, 0 }, + { "Mch8", "8-bit ATI Mach8 card.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_MACH8, 0 }, + { "P9K", "8, 16, and 24-bit color for Weitek P9000 based boards", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_P9000, 0 }, + { "S3", "8, 16 and 24-bit color for S3 based boards", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_S3, 0 }, + { "W32", "8-bit Color for ET4000/W32, /W32i and /W32p cards.", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_W32, 0 }, + { "nest", "A nested server for testing purposes", + DMENU_SET_FLAG, (void *)&XF86ServerDists, DIST_XF86_SERVER_NEST, 0 }, { NULL } }, }; @@ -339,10 +507,38 @@ manager later.", DMenu MenuInstallOptions = { DMENU_NORMAL_TYPE, "Choose Installation Options", -"blah blah", +"This menu controls how the FreeBSD installation will deal with various\n\ +error conditions, should they arise, and the degree to which you, the\n\ +user, will be prompted for options.", NULL, NULL, -{ { NULL } }, +{ { "Ftp Options", "Ftp options menu", + DMENU_SUBMENU, (void *)&MenuInstallFtpOptions, 0, 0 }, + { "NFS Secure", "NFS server talks only on a secure port", + DMENU_SET_VARIABLE, (void *)"nfsServerSecure=yes", 0, 0 }, + { "NFS Slow", "User is using a slow PC or ethernet card", + DMENU_SET_VARIABLE, (void *)"nfsSlowPC=yes", 0, 0 }, + { "Extra Debugging", "Toggle the extra debugging flag", + DMENU_SET_VARIABLE, (void *)"debug=yes", 0, 0 }, + { "No Debugging", "Turn the extra debugging flag off", + DMENU_SET_VARIABLE, (void *)"debug=no", 0, 0 }, + { NULL } }, +}; + +DMenu MenuInstallFtpOptions = { +DMENU_RADIO_TYPE, +"Choose Ftp Options", +"In case of ftp failure, how would you like this installation\n\ +to deal with it? You have one of several choices:", +NULL, +NULL, +{ { "*Ftp Retry", "On transfer failure, retry same host", + DMENU_SET_VARIABLE, (void *)"ftpRetryType=loop", 0, 0 }, + { "Ftp Reselect", "On transfer failure, ask for another host", + DMENU_SET_VARIABLE, (void *)"ftpRetryType=reselect", 0, 0 }, + { "Ftp Abort", "On transfer failure, abort installation", + DMENU_SET_VARIABLE, (void *)"ftpRetryType=abort", 0, 0 }, + { NULL } }, }; /* The main installation menu */ @@ -350,20 +546,21 @@ DMenu MenuInstall = { DMENU_NORMAL_TYPE, "Choose Installation Options", /* title */ "Before installation can continue, you need to specify a few items\n\ -of information regarding the location of the distribution and the kind\n\ -of installation you want to have (and where). There are also a number\n\ -of options you can specify in the Options menu. If you do not wish to\n\ -install FreeBSD at this time, you may select Cancel to leave this menu", +of information regarding the type of distribution you wish to have\n\ +and from where you wish to install it. There are also a number\n\ +of options you can specify in the Options menu which will determine\n\ +how . If you do not wish to install FreeBSD at this time, you may\n\ +select Cancel to leave this menu.", "You may also wish to read the install guide - press F1 to do so", "install.hlp", { { "Media", "Choose Installation media type", /* M */ - DMENU_SUBMENU, (void *)&MenuMedia, 0 }, + DMENU_SUBMENU, (void *)&MenuMedia, 0, 0 }, { "Type", "Choose the type of installation you want", /* T */ - DMENU_SUBMENU, (void *)&MenuInstallType, 0 }, + DMENU_SUBMENU, (void *)&MenuInstallType, 0, 0 }, { "Options", "Specify installation options", /* O */ - DMENU_SUBMENU, (void *)&MenuInstallOptions, 0 }, - { "Proceed", "Proceed with installation", /* P */ - DMENU_CANCEL, (void *)NULL, 0 }, + DMENU_SUBMENU, (void *)&MenuInstallOptions, 0, 0}, + { "Proceed", "Proceed with installation", /* P */ + DMENU_CANCEL, (void *)NULL, 0, 0 }, { NULL } }, }; diff --git a/usr.sbin/sysinstall/sysinstall.h b/usr.sbin/sysinstall/sysinstall.h index 1a29cc2..f71ea32 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.13 1995/05/08 10:20:56 jkh Exp $ + * $Id: sysinstall.h,v 1.14 1995/05/08 21:39:40 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -50,6 +50,7 @@ #include <unistd.h> #include <dialog.h> #include "libdisk.h" +#include "dist.h" /*** Defines ***/ @@ -58,49 +59,7 @@ #define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ #define DMENU_MULTIPLE_TYPE 0x4 /* Multiple choice menu */ #define DMENU_SELECTION_RETURNS 0x8 /* Select item then exit */ - -/* Bitfields for distributions - hope we never have more than 32! :-) */ -#define DIST_BIN 0x1 -#define DIST_GAMES 0x2 -#define DIST_MANPAGES 0x4 -#define DIST_PROFLIBS 0x8 -#define DIST_DICT 0x10 -#define DIST_SRC 0x20 -#define DIST_DES 0x40 -#define DIST_COMPAT1X 0x80 -#define DIST_XFREE86 0x100 -#define DIST_ALL 0xFFF - -/* Canned distribution sets */ -#define _DIST_DEVELOPER \ - (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_PROFLIBS | DIST_SRC) - -#define _DIST_XDEVELOPER \ - (_DIST_DEVELOPER | DIST_XFREE86) - -#define _DIST_USER \ - (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_COMPAT1X) - -#define _DIST_XUSER \ - (_DIST_USER | DIST_XFREE86) - - -/* Subtypes for SRC distribution */ -#define DIST_SRC_BASE 0x1 -#define DIST_SRC_GNU 0x2 -#define DIST_SRC_ETC 0x4 -#define DIST_SRC_GAMES 0x8 -#define DIST_SRC_INCLUDE 0x10 -#define DIST_SRC_LIB 0x20 -#define DIST_SRC_LIBEXEC 0x40 -#define DIST_SRC_LKM 0x80 -#define DIST_SRC_RELEASE 0x100 -#define DIST_SRC_SBIN 0x200 -#define DIST_SRC_SHARE 0x400 -#define DIST_SRC_SYS 0x800 -#define DIST_SRC_UBIN 0x1000 -#define DIST_SRC_USBIN 0x2000 -#define DIST_SRC_ALL 0xFFFF +#define DMENU_CALL_FIRST 0x10 /* In multiple, use one handler */ /* variable limits */ #define VAR_NAME_MAX 128 @@ -109,9 +68,6 @@ /* device limits */ #define DEV_NAME_MAX 128 -/* handy */ -#define ONE_MEG 1048576 - /*** Types ***/ typedef unsigned int Boolean; @@ -123,6 +79,7 @@ typedef enum { DMENU_SYSTEM_COMMAND, /* Run shell commmand */ DMENU_SYSTEM_COMMAND_BOX, /* Same as above, but in prgbox */ DMENU_SET_VARIABLE, /* Set an environment/system var */ + DMENU_SET_FLAG, /* Set flag in an unsigned int */ DMENU_CALL, /* Call back a C function */ DMENU_CANCEL, /* Cancel out of this menu */ DMENU_NOP, /* Do nothing special for item */ @@ -133,6 +90,7 @@ typedef struct _dmenuItem { char *prompt; /* Our prompt */ DMenuItemType type; /* What type of item we are */ void *ptr; /* Generic data ptr */ + u_long parm; /* Parameter for above */ Boolean disabled; /* Are we temporarily disabled? */ } DMenuItem; @@ -200,6 +158,9 @@ extern Boolean OnVTY; /* On a syscons VTY? */ extern Variable *VarHead; /* The head of the variable chain */ extern unsigned int Dists; /* Which distributions we want */ extern unsigned int SrcDists; /* Which src distributions we want */ +extern unsigned int XF86Dists;/* Which XFree86 dists we want */ +extern unsigned int XF86ServerDists; /* The XFree86 servers we want */ +extern unsigned int XF86FontDists; /* The XFree86 fonts we want */ extern struct disk *Disks[]; /* The disks we're working on */ /*** Prototypes ***/ @@ -210,6 +171,11 @@ extern void command_sort(void); extern void command_execute(void); extern void command_add(char *key, char *fmt, ...); +/* decode.c */ +extern DMenuItem *decode(DMenu *menu, char *name); +extern Boolean dispatch(DMenuItem *tmp, char *name); +extern Boolean decode_and_dispatch_multiple(DMenu *menu, char *names); + /* devices.c */ extern struct disk *device_slice_disk(struct disk *d); extern DMenu *device_create_disk_menu(DMenu *menu, Device **rdevs, int (*hook)()); @@ -230,6 +196,8 @@ extern int distSetUser(char *str); extern int distSetXUser(char *str); extern int distSetMinimum(char *str); extern int distSetEverything(char *str); +extern int distSetSrc(char *str); +extern void distExtractAll(void); /* dmenu.c */ extern void dmenuOpen(DMenu *menu, int *choice, int *scroll, @@ -257,17 +225,17 @@ extern void lang_set_Spanish(char *str); extern void lang_set_Swedish(char *str); /* makedevs.c (auto-generated) */ -extern const char termcap_vt100[]; -extern const char termcap_cons25[]; -extern const char termcap_cons25_m[]; -extern const char termcap_cons25r[]; -extern const char termcap_cons25r_m[]; -extern const char termcap_cons25l1[]; -extern const char termcap_cons25l1_m[]; -extern const u_char font_iso_8x14[]; -extern const u_char font_cp850_8x14[]; -extern const u_char font_koi8_r_8x14[]; -extern const u_char koi8_r2cp866[]; +extern const char termcap_vt100[]; +extern const char termcap_cons25[]; +extern const char termcap_cons25_m[]; +extern const char termcap_cons25r[]; +extern const char termcap_cons25r_m[]; +extern const char termcap_cons25l1[]; +extern const char termcap_cons25l1_m[]; +extern const u_char font_iso_8x14[]; +extern const u_char font_cp850_8x14[]; +extern const u_char font_koi8_r_8x14[]; +extern const u_char koi8_r2cp866[]; /* media.c */ extern int mediaSetCDROM(char *str); |