summaryrefslogtreecommitdiffstats
path: root/release/sysinstall
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1997-03-09 22:25:49 +0000
committerjkh <jkh@FreeBSD.org>1997-03-09 22:25:49 +0000
commit636598f5615bc6304ca5a939852a221e5a7ce077 (patch)
tree509b2cf3a856a0a80a6eeee4f35cd1e198b0c41b /release/sysinstall
parent1be4650826e4a5f20a6ecee1f3835d0f86388e58 (diff)
downloadFreeBSD-src-636598f5615bc6304ca5a939852a221e5a7ce077.zip
FreeBSD-src-636598f5615bc6304ca5a939852a221e5a7ce077.tar.gz
Add a registration screen so we can finally start counting our little user
puppies.
Diffstat (limited to 'release/sysinstall')
-rw-r--r--release/sysinstall/Makefile8
-rw-r--r--release/sysinstall/anonFTP.c3
-rw-r--r--release/sysinstall/apache.c3
-rw-r--r--release/sysinstall/config.c8
-rw-r--r--release/sysinstall/dispatch.c3
-rw-r--r--release/sysinstall/install.c11
-rw-r--r--release/sysinstall/menus.c10
-rw-r--r--release/sysinstall/misc.c4
-rw-r--r--release/sysinstall/register.c346
-rw-r--r--release/sysinstall/sysinstall.h3
-rw-r--r--release/sysinstall/tcpip.c4
-rw-r--r--release/sysinstall/user.c4
12 files changed, 390 insertions, 17 deletions
diff --git a/release/sysinstall/Makefile b/release/sysinstall/Makefile
index 1b2762e..0eb723b 100644
--- a/release/sysinstall/Makefile
+++ b/release/sysinstall/Makefile
@@ -7,10 +7,10 @@ CLEANFILES+= keymap.tmp keymap.h
.PATH: ${.CURDIR}/../disklabel ${.CURDIR}/../../usr.bin/cksum
SRCS= anonFTP.c apache.c attr.c cdrom.c command.c config.c devices.c \
- disks.c dispatch.c dist.c dmenu.c doc.c dos.c dosio.c floppy.c ftp.c \
- globals.c index.c install.c installUpgrade.c \
- keymap.c label.c lndir.c main.c makedevs.c media.c menus.c misc.c \
- msg.c network.c nfs.c options.c package.c samba.c system.c \
+ disks.c dispatch.c dist.c dmenu.c doc.c dos.c dosio.c floppy.c \
+ ftp.c globals.c index.c install.c installUpgrade.c keymap.c \
+ label.c lndir.c main.c makedevs.c media.c menus.c misc.c \
+ msg.c network.c nfs.c options.c package.c register.c samba.c system.c \
tape.c tcpip.c termcap.c ufs.c user.c variable.c wizard.c \
uc_eisa.c uc_isa.c uc_kmem.c uc_list.c uc_main.c uc_pci.c \
uc_scsi.c keymap.h
diff --git a/release/sysinstall/anonFTP.c b/release/sysinstall/anonFTP.c
index 699e1f6..9171232 100644
--- a/release/sysinstall/anonFTP.c
+++ b/release/sysinstall/anonFTP.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id$
+ * $Id: anonFTP.c,v 1.21 1997/02/07 04:25:16 jkh Exp $
*
* Copyright (c) 1995
* Coranth Gryphon. All rights reserved.
@@ -224,6 +224,7 @@ anonftpOpenDialog(void)
while (layoutDialogLoop(ds_win, layout, &obj, &n, max, &cancelbutton, &cancel));
/* Clear this crap off the screen */
+ delwin(ds_win);
dialog_clear_norefresh();
use_helpfile(NULL);
diff --git a/release/sysinstall/apache.c b/release/sysinstall/apache.c
index 10a03b9..6f734ec 100644
--- a/release/sysinstall/apache.c
+++ b/release/sysinstall/apache.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id$
+ * $Id: apache.c,v 1.33 1997/02/07 04:25:20 jkh Exp $
*
* Copyright (c) 1995
* Coranth Gryphon. All rights reserved.
@@ -213,6 +213,7 @@ apacheOpenDialog(void)
}
/* Clear this crap off the screen */
+ delwin(ds_win);
dialog_clear_norefresh();
use_helpfile(NULL);
diff --git a/release/sysinstall/config.c b/release/sysinstall/config.c
index f2300fd..ccf21a5 100644
--- a/release/sysinstall/config.c
+++ b/release/sysinstall/config.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: config.c,v 1.83 1997/02/22 14:11:16 peter Exp $
+ * $Id: config.c,v 1.84 1997/03/08 12:57:40 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -449,6 +449,12 @@ configSaverTimeout(dialogMenuItem *self)
}
int
+configRegister(dialogMenuItem *self)
+{
+ return DITEM_STATUS(registerOpenDialog()) | DITEM_RESTORE;
+}
+
+int
configNTP(dialogMenuItem *self)
{
int status;
diff --git a/release/sysinstall/dispatch.c b/release/sysinstall/dispatch.c
index 034a7f5..5e7ba53 100644
--- a/release/sysinstall/dispatch.c
+++ b/release/sysinstall/dispatch.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id$
+ * $Id: dispatch.c,v 1.10 1997/02/22 14:11:26 peter Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -48,6 +48,7 @@ static struct _word {
{ "configRouter", configRouter },
{ "configNFSServer", configNFSServer },
{ "configSamba", configSamba },
+ { "configRegister", configRegister },
{ "configPackages", configPackages },
{ "diskPartitionEditor", diskPartitionEditor },
{ "diskPartitionWrite", diskPartitionWrite },
diff --git a/release/sysinstall/install.c b/release/sysinstall/install.c
index 1eeafe9..c642e4f 100644
--- a/release/sysinstall/install.c
+++ b/release/sysinstall/install.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: install.c,v 1.174 1997/03/08 12:57:43 jkh Exp $
+ * $Id: install.c,v 1.175 1997/03/08 16:17:46 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -593,6 +593,15 @@ installNovice(dialogMenuItem *self)
restorescr(w);
}
+ dialog_clear_norefresh();
+ if (!msgYesNo("Would you like to register your FreeBSD system at this time?\n\n"
+ "PLEASE take just 5 minutes to do this - if we're ever to get any\n"
+ "significant base of commercial software for FreeBSD, we need to\n"
+ "be able to provide more information about the size of our user base.\n"
+ "This is where your registration can really help us, and you can also\n"
+ "sign up for the new FreeBSD newsletter (its free!) at the same time."))
+ configRegister(NULL);
+
/* XXX Put whatever other nice configuration questions you'd like to ask the user here XXX */
/* Give user the option of one last configuration spree */
diff --git a/release/sysinstall/menus.c b/release/sysinstall/menus.c
index 169b906..4d0f08c 100644
--- a/release/sysinstall/menus.c
+++ b/release/sysinstall/menus.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: menus.c,v 1.119 1997/02/22 14:12:05 peter Exp $
+ * $Id: menus.c,v 1.120 1997/03/08 12:57:45 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -257,6 +257,8 @@ DMenu MenuIndex = {
{ "Packages", "The packages collection", NULL, configPackages },
{ "Partition", "The disk Partition Editor", NULL, diskPartitionEditor },
{ "PCNFSD", "Run authentication server for PC-NFS.", dmenuVarCheck, configPCNFSD, NULL, "pcnfsd" },
+ { "Register", "Register yourself or company as a FreeBSD user.", dmenuVarCheck, configRegister, NULL, "registered" },
+ { "Root Password", "Set the system manager's password.", NULL, dmenuSystemCommand, NULL, "passwd root" },
{ "Root Password", "Set the system manager's password.", NULL, dmenuSystemCommand, NULL, "passwd root" },
{ "Router", "Select routing daemon (default: routed)", NULL, configRouter, NULL, "router" },
{ "Samba", "Configure Samba for LanManager access.", dmenuVarCheck, configSamba, NULL, "samba" },
@@ -1059,7 +1061,7 @@ DMenu MenuConfigure = {
NULL, dmenuSystemCommand, NULL, "passwd root" },
{ "A HTML Docs", "Go to the HTML documentation menu (post-install)",
NULL, docBrowser },
- { "B XFree86", "Configure XFree86",
+ { "X XFree86", "Configure XFree86",
NULL, configXFree86 },
{ "D Distributions", "Install additional distribution sets",
NULL, distExtractAll },
@@ -1067,7 +1069,9 @@ DMenu MenuConfigure = {
NULL, diskLabelEditor },
{ "Partition", "The disk Partition Editor",
NULL, diskPartitionEditor },
- { "Exit", "Exit this menu (returning to previous)",
+ { "S Set Root Password", "Set the system manager's password.", NULL, dmenuSystemCommand, NULL, "passwd root" },
+ { "R Register", "Register yourself or company as a FreeBSD user.", NULL, configRegister },
+ { "E Exit", "Exit this menu (returning to previous)",
NULL, dmenuExit },
{ NULL } },
};
diff --git a/release/sysinstall/misc.c b/release/sysinstall/misc.c
index 028018e..6670d52 100644
--- a/release/sysinstall/misc.c
+++ b/release/sysinstall/misc.c
@@ -1,7 +1,7 @@
/*
* Miscellaneous support routines..
*
- * $Id$
+ * $Id: misc.c,v 1.32 1997/02/22 14:12:08 peter Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -361,7 +361,7 @@ openLayoutDialog(char *helpfile, char *title, int x, int y, int width, int heigh
/* Setup a nice screen for us to splat stuff onto */
draw_box(win, y, x, height, width, dialog_attr, border_attr);
wattrset(win, dialog_attr);
- mvwaddstr(win, y, x + 20, title);
+ mvwaddstr(win, y, x + (COLS - strlen(title)) / 2, title);
}
return win;
}
diff --git a/release/sysinstall/register.c b/release/sysinstall/register.c
new file mode 100644
index 0000000..8a796c0
--- /dev/null
+++ b/release/sysinstall/register.c
@@ -0,0 +1,346 @@
+/*
+ * The new sysinstall program.
+ *
+ * This is probably the last program in the `sysinstall' line - the next
+ * generation being essentially a complete rewrite.
+ *
+ * $Id$
+ *
+ * Copyright (c) 1997
+ * Jordan Hubbard. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * verbatim and that no modifications are made prior to this
+ * point in the file.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include "sysinstall.h"
+#include <ctype.h>
+
+#define REGISTER_HELPFILE "register"
+#define REGISTRATION_FNAME "/tmp/new-registration"
+#define REGISTRATION_ADDRESS "jkh@freebsd.org"
+#define MAJORDOMO_ADDRESS "majordomo@freebsd.org"
+
+#define FIRSTNAME_FIELD_LEN 25
+#define LASTNAME_FIELD_LEN 30
+#define EMAIL_FIELD_LEN 30
+#define ADDRESS_FIELD_LEN 160
+#define CITY_FIELD_LEN 20
+#define STATE_FIELD_LEN 15
+#define ZIP_FIELD_LEN 15
+
+static char firstname[FIRSTNAME_FIELD_LEN], lastname[LASTNAME_FIELD_LEN],
+ email[EMAIL_FIELD_LEN], address[ADDRESS_FIELD_LEN],
+ city[CITY_FIELD_LEN], state[STATE_FIELD_LEN], zip[ZIP_FIELD_LEN];
+
+static int okbutton, cancelbutton;
+
+/* What the screen size is meant to be */
+#define REGISTER_DIALOG_Y 0
+#define REGISTER_DIALOG_X 2
+#define REGISTER_DIALOG_WIDTH COLS - 4
+#define REGISTER_DIALOG_HEIGHT LINES - 2
+
+static Layout layout[] = {
+#define LAYOUT_LASTNAME 0
+ { 2, 2, LASTNAME_FIELD_LEN - 1, LASTNAME_FIELD_LEN - 1,
+ "Last Name:", "Your surname (family name) or company name should go here.",
+ lastname, STRINGOBJ, NULL },
+#define LAYOUT_FIRSTNAME 1
+ { 2, 36, FIRSTNAME_FIELD_LEN - 1, FIRSTNAME_FIELD_LEN - 1,
+ "First Name:", "Your given name or a contact name if registering for a company.",
+ firstname, STRINGOBJ, NULL },
+#define LAYOUT_EMAIL 2
+ { 6, 2, EMAIL_FIELD_LEN - 1, EMAIL_FIELD_LEN - 1,
+ "EMail Address:",
+ "Where you'd like any announcement email sent, e.g. bsdmail@someplace.com",
+ email, STRINGOBJ, NULL },
+#define LAYOUT_ADDRESS 3
+ { 10, 2, 60, ADDRESS_FIELD_LEN - 1,
+ "Street address:", "Your street address, all in one line (optional).",
+ address, STRINGOBJ, NULL },
+#define LAYOUT_CITY 4
+ { 14, 2, CITY_FIELD_LEN - 1, CITY_FIELD_LEN - 1,
+ "City:", "Your city name (optional)",
+ city, STRINGOBJ, NULL },
+#define LAYOUT_STATE 5
+ { 14, 26, STATE_FIELD_LEN - 1, STATE_FIELD_LEN - 1,
+ "State / Province:",
+ "Your local state or province.",
+ state, STRINGOBJ, NULL },
+#define LAYOUT_ZIP 5
+ { 14, 50, ZIP_FIELD_LEN - 1, ZIP_FIELD_LEN - 1,
+ "Zip / Country Code:",
+ "Your U.S. Zip code or International country code (optional).",
+ zip, STRINGOBJ, NULL },
+#define LAYOUT_OKBUTTON 7
+ { 18, 20, 0, 0,
+ "OK", "Select this if you are happy with these settings",
+ &okbutton, BUTTONOBJ, NULL },
+#define LAYOUT_CANCELBUTTON 8
+ { 18, 40, 0, 0,
+ "CANCEL", "Select this if you wish to cancel this registration",
+ &cancelbutton, BUTTONOBJ, NULL },
+ { NULL },
+};
+
+/* Submenu selections */
+#define COMMERCE_MAIL 0
+#define COMMERCE_EMAIL 1
+#define ANNOUNCE_LIST 2
+#define NEWSLETTER 3
+
+static struct { int y, x, sel; char *desc, *allowed; } hotspots[] = {
+ { 7, 35, 0, "Do you wish to receive FreeBSD [ONLY!] related commercial mail?", "Y" },
+ { 7, 57, 0, "Do you wish to receive FreeBSD [ONLY!] related commercial email?", "Y" },
+ { 8, 35, 0, "Sign up (with majordomo@FreeBSD.org) for important announcements?", "Y" },
+ { 9, 35, 0, "Sign up for the FreeBSD Newsletter? P = Postal (paper) copy, E = Email", "PE" },
+};
+
+/* Check the accuracy of user's choices before letting them move on */
+static int
+verifySettings(void)
+{
+ if (!lastname[0]) {
+ msgConfirm("Missing last name / company name field.");
+ return 0;
+ }
+ else if (email[0] && !index(email, '@'))
+ return !msgYesNo("Hmmmm, this email address has no `@' in it. Are you\n"
+ "sure that %s is a valid address?");
+ else if (address[0] && !city[0]) {
+ msgConfirm("Missing City name.");
+ return 0;
+ }
+ else if (!email[0] && (hotspots[COMMERCE_EMAIL].sel || hotspots[NEWSLETTER].sel == 2)) {
+ msgConfirm("You've signed up to receive commercial email or the newsletter by\n"
+ "email but have no email address specified!");
+ return 0;
+ }
+ else if (!address[0] && (hotspots[COMMERCE_MAIL].sel || hotspots[NEWSLETTER].sel == 1)) {
+ msgConfirm("You've signed up to receive commercial mail or the newsletter by\n"
+ "post but have no postal address specified!");
+ return 0;
+ }
+ return 1;
+}
+
+/* Do the actual work of mailing out the registration once all is filled in */
+static void
+handle_registration(void)
+{
+ FILE *fp;
+ WINDOW *save = savescr();
+
+ dialog_clear_norefresh();
+ (void)unlink(REGISTRATION_FNAME);
+ fp = fopen(REGISTRATION_FNAME, "w");
+ if (!fp) {
+ msgConfirm("Unable to open %s for the new registration.\n"
+ "That's pretty bad! Please fix whatever's wrong\n"
+ "and try this registration again.");
+ restorescr(save);
+ return;
+ }
+ fprintf(fp, "<entry>\n");
+ fprintf(fp, "<first>%s</first>\n", firstname);
+ fprintf(fp, "<last>%s</last>\n", lastname);
+ fprintf(fp, "<email>%s</email>\n", email);
+ fprintf(fp, "<address>%s</address>\n", address);
+ fprintf(fp, "<city>%s</city>\n", city);
+ fprintf(fp, "<state>%s</state>\n", state);
+ fprintf(fp, "<zip>%s</zip>\n", zip);
+ fprintf(fp, "<options commerce_email=\"%s\" commerce_mail=\"%s\" announce=\"%s\" newsletter=\"%s\"></options>\n",
+ hotspots[COMMERCE_EMAIL].sel ? "yes" : "no", hotspots[COMMERCE_MAIL].sel ? "yes" : "no",
+ hotspots[ANNOUNCE_LIST].sel ? "yes" : "no",
+ hotspots[NEWSLETTER].sel == 0 ? "no" : hotspots[NEWSLETTER].sel == 1 ? "postal" : "email");
+ fprintf(fp, "</entry>\n");
+ fclose(fp);
+ if (!msgYesNo("Do you have a working network connection and outgoing email\n"
+ "enabled at this time? I need to be able to reach freebsd.org\n"
+ "in order to submit your registration.")) {
+ if (!vsystem("mail %s < %s", REGISTRATION_ADDRESS, REGISTRATION_FNAME)) {
+ msgConfirm("Thank you! Your registration has been sent in successfully.\n");
+ (void)unlink(REGISTRATION_FNAME);
+ }
+ else {
+ msgConfirm("Argh! The mail program returned a bad status - there\n"
+ "must be something still not quite configured correctly.\n"
+ "leaving the registration in: %s\n"
+ "When you're connected to the net and ready to send it,\n"
+ "simply type: mail %s < %s\n", REGISTRATION_ADDRESS, REGISTRATION_FNAME,
+ REGISTRATION_FNAME);
+ }
+ if (hotspots[ANNOUNCE_LIST].sel) {
+ char *cp;
+
+ cp = msgGetInput(email, "What email address would you like to subscribe under?\n"
+ "This is a fairly low-traffic mailing list and only generates\n"
+ "around 5 messages a month, so it's also safe to receive at your\n"
+ "standard email address.");
+ if (!cp)
+ msgConfirm("OK, I won't subscribe to announce at this time. To do it manually\n"
+ "yourself, simply send mail to %s.", MAJORDOMO_ADDRESS);
+ else {
+ if (!vsystem("echo subscribe freebsd-announce %s | mail %s", email, MAJORDOMO_ADDRESS))
+ msgConfirm("Your request to join the announce mailing list has been sent.\n"
+ "you should receive notification back in 24 hours or less, otherwise\n"
+ "something has gone wrong and you should try this again by sending\n"
+ "a message to %s which contains the line:\n\n"
+ "subscribe freebsd-announce %s\n", MAJORDOMO_ADDRESS, email);
+ else
+ msgConfirm("Argh! The mail program returned a bad status - there\n"
+ "must be something still not quite configured correctly.\n"
+ "Please fix this then try again by sending a message to\n"
+ "to %s which contains the line:\n\n"
+ "subscribe freebsd-announce %s\n", MAJORDOMO_ADDRESS, email);
+ }
+ }
+ }
+ else {
+ msgConfirm("OK, your registration has been left in the file %s\n"
+ "When you're connected to the net and ready to send it,\n"
+ "simply type: mail %s < %s\n", REGISTRATION_FNAME,
+ REGISTRATION_ADDRESS, REGISTRATION_FNAME);
+ }
+ restorescr(save);
+}
+
+/* Put up a subdialog for the registration options */
+static void
+subdialog(WINDOW *win)
+{
+ int i, j, attrs;
+ char help_line[80];
+
+ attrs = getattrs(win);
+ mvwaddstr(win, hotspots[COMMERCE_MAIL].y, hotspots[COMMERCE_MAIL].x - 1, "[ ] Postal Adverts");
+ mvwaddstr(win, hotspots[COMMERCE_EMAIL].y, hotspots[COMMERCE_EMAIL].x - 1, "[ ] Email Adverts");
+ mvwaddstr(win, hotspots[ANNOUNCE_LIST].y, hotspots[ANNOUNCE_LIST].x - 1,
+ "[ ] The announce@FreeBSD.ORG mailing list.");
+ mvwaddstr(win, hotspots[NEWSLETTER].y, hotspots[NEWSLETTER].x - 1, "[ ] The FreeBSD Newsletter.");
+ /* Tack up the initial values */
+ for (i = 0; i < sizeof(hotspots) / sizeof(hotspots[0]); i++) {
+ wattrset(win, attrs | A_BOLD);
+ mvwaddch(win, hotspots[i].y, hotspots[i].x, hotspots[i].sel ? hotspots[i].allowed[hotspots[i].sel - 1] : 'N');
+ }
+ wattrset(win, attrs);
+ wrefresh(win);
+
+ for (i = 0; i < sizeof(hotspots) / sizeof(hotspots[0]);) {
+ int ch, len = strlen(hotspots[i].desc);
+ char *cp;
+
+ /* Display the help line at the bottom of the screen */
+ for (j = 0; j < 79; j++)
+ help_line[j] = (j < len) ? hotspots[i].desc[j] : ' ';
+ help_line[j] = '\0';
+ use_helpline(help_line);
+ display_helpline(win, LINES - 1, COLS - 1);
+ wmove(win, hotspots[i].y, hotspots[i].x);
+ wrefresh(win);
+ switch(ch = toupper(getch())) {
+ case KEY_UP:
+ if (i)
+ i--;
+ continue;
+
+ case KEY_DOWN:
+ case '\011': /* TAB */
+ case '\012': /* ^J */
+ case '\014': /* ^M */
+ /* Treat as a no-change op */
+ ++i;
+ break;
+
+ case 'N': /* No is generic to all */
+ hotspots[i].sel = 0;
+ wattrset(win, attrs | A_BOLD);
+ mvwaddch(win, hotspots[i].y, hotspots[i].x, 'N');
+ wattrset(win, attrs);
+ wrefresh(win);
+ ++i;
+ break;
+
+ default:
+ cp = index(hotspots[i].allowed, ch);
+ if (cp) {
+ hotspots[i].sel = (cp - hotspots[i].allowed) + 1;
+ wattrset(win, attrs | A_BOLD);
+ mvwaddch(win, hotspots[i].y, hotspots[i].x, *cp);
+ wattrset(win, attrs);
+ wrefresh(win);
+ ++i;
+ }
+ else
+ beep();
+ break;
+ }
+ }
+}
+
+/* Register a user */
+int
+registerOpenDialog(void)
+{
+ WINDOW *ds_win, *save = savescr();
+ ComposeObj *obj = NULL;
+ int n = 0, cancel = FALSE;
+ int max, ret = DITEM_SUCCESS;
+
+ dialog_clear_norefresh();
+ /* We need a curses window */
+ if (!(ds_win = openLayoutDialog(REGISTER_HELPFILE, " FreeBSD Registration Form: Press F1 for Help / General Info ",
+ REGISTER_DIALOG_X, REGISTER_DIALOG_Y,
+ REGISTER_DIALOG_WIDTH, REGISTER_DIALOG_HEIGHT))) {
+ beep();
+ msgConfirm("Cannot open registration dialog window!!");
+ restorescr(save);
+ return DITEM_FAILURE;
+ }
+
+ /* Some more initialisation before we go into the main input loop */
+ obj = initLayoutDialog(ds_win, layout, REGISTER_DIALOG_X, REGISTER_DIALOG_Y, &max);
+
+reenter:
+ cancelbutton = okbutton = 0;
+ while (layoutDialogLoop(ds_win, layout, &obj, &n, max, &cancelbutton, &cancel)) {
+ if (n == LAYOUT_ADDRESS)
+ subdialog(ds_win);
+ }
+
+ if (!cancel && !verifySettings())
+ goto reenter;
+
+ /* OK, we've got a valid registration, now push it out */
+ handle_registration();
+
+ /* Clear this crap off the screen */
+ delwin(ds_win);
+ dialog_clear_norefresh();
+ use_helpfile(NULL);
+
+ restorescr(save);
+ return ret;
+}
diff --git a/release/sysinstall/sysinstall.h b/release/sysinstall/sysinstall.h
index 45a9971..4b6f249 100644
--- a/release/sysinstall/sysinstall.h
+++ b/release/sysinstall/sysinstall.h
@@ -4,7 +4,7 @@
* This is probably the last attempt in the `sysinstall' line, the next
* generation being slated to essentially a complete rewrite.
*
- * $Id: sysinstall.h,v 1.118 1997/02/22 14:12:18 peter Exp $
+ * $Id: sysinstall.h,v 1.119 1997/03/08 11:06:43 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -407,6 +407,7 @@ extern int configFstab(void);
extern void configEnvironmentSysconfig(char *config);
extern void configEnvironmentResolv(char *config);
extern void configSysconfig(char *config);
+extern int configRegister(dialogMenuItem *self);
extern void configResolv(void);
extern int configPackages(dialogMenuItem *self);
extern int configSaver(dialogMenuItem *self);
diff --git a/release/sysinstall/tcpip.c b/release/sysinstall/tcpip.c
index 77361ed..c6ac750 100644
--- a/release/sysinstall/tcpip.c
+++ b/release/sysinstall/tcpip.c
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: tcpip.c,v 1.64 1997/02/22 14:12:23 peter Exp $
*
* Copyright (c) 1995
* Gary J Palmer. All rights reserved.
@@ -168,6 +168,7 @@ tcpOpenDialog(Device *devp)
TCP_DIALOG_X, TCP_DIALOG_Y, TCP_DIALOG_WIDTH, TCP_DIALOG_HEIGHT))) {
beep();
msgConfirm("Cannot open TCP/IP dialog window!!");
+ restorescr(save);
return DITEM_FAILURE;
}
@@ -259,6 +260,7 @@ reenter:
goto reenter;
/* Clear this crap off the screen */
+ delwin(ds_win);
dialog_clear_norefresh();
use_helpfile(NULL);
diff --git a/release/sysinstall/user.c b/release/sysinstall/user.c
index 2a47352..680a543 100644
--- a/release/sysinstall/user.c
+++ b/release/sysinstall/user.c
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: user.c,v 1.13 1997/02/22 14:12:36 peter Exp $
*
* Copyright (c) 1996
* Jörg Wunsch. All rights reserved.
@@ -381,6 +381,7 @@ reenter:
goto reenter;
/* Clear this crap off the screen */
+ delwin(ds_win);
dialog_clear_norefresh();
use_helpfile(NULL);
@@ -710,6 +711,7 @@ reenter:
goto reenter;
/* Clear this crap off the screen */
+ delwin(ds_win);
dialog_clear_norefresh();
use_helpfile(NULL);
OpenPOWER on IntegriCloud