summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2000-05-16 22:05:32 +0000
committerobrien <obrien@FreeBSD.org>2000-05-16 22:05:32 +0000
commit406f1714dbaea520814643504466a34dd4d78bad (patch)
tree3d8c1df5f0cf552d34e29e3e671dd2dd65bf1d78
parente3cda7421d1200af9960288af861554b935f0fcd (diff)
downloadFreeBSD-src-406f1714dbaea520814643504466a34dd4d78bad.zip
FreeBSD-src-406f1714dbaea520814643504466a34dd4d78bad.tar.gz
Add an option to select the Fix-it tty. The current behavior is utterly
*useless* on serial consoled machines.
-rw-r--r--release/sysinstall/install.c28
-rw-r--r--release/sysinstall/options.c21
-rw-r--r--release/sysinstall/sysinstall.h1
-rw-r--r--usr.sbin/sade/install.c28
-rw-r--r--usr.sbin/sade/sade.h1
-rw-r--r--usr.sbin/sysinstall/install.c28
-rw-r--r--usr.sbin/sysinstall/options.c21
-rw-r--r--usr.sbin/sysinstall/sysinstall.h1
8 files changed, 102 insertions, 27 deletions
diff --git a/release/sysinstall/install.c b/release/sysinstall/install.c
index db5719e..db3a990 100644
--- a/release/sysinstall/install.c
+++ b/release/sysinstall/install.c
@@ -398,17 +398,20 @@ fixit_common(void)
if (!file_readable(TERMCAP_FILE))
create_termcap();
if (!(child = fork())) {
- int i, fd;
+ int i, fd, fdstop;
struct termios foo;
extern int login_tty(int);
ioctl(0, TIOCNOTTY, NULL);
- for (i = getdtablesize(); i >= 0; --i)
+ fdstop = strcmp(variable_get(VAR_FIXIT_TTY), "serial") == 0 ? 3 : 0;
+ for (i = getdtablesize(); i >= fdstop; --i)
close(i);
- fd = open("/dev/ttyv3", O_RDWR);
- ioctl(0, TIOCSCTTY, &fd);
- dup2(0, 1);
- dup2(0, 2);
+ if (strcmp(variable_get(VAR_FIXIT_TTY), "standard") == 0) {
+ fd = open("/dev/ttyv3", O_RDWR);
+ ioctl(0, TIOCSCTTY, &fd);
+ dup2(0, 1);
+ dup2(0, 2);
+ }
DebugFD = 2;
if (login_tty(fd) == -1)
msgDebug("fixit: I can't set the controlling terminal.\n");
@@ -432,9 +435,15 @@ fixit_common(void)
}
else {
dialog_clear_norefresh();
- msgNotify("Waiting for fixit shell to exit. Go to VTY4 now by\n"
- "typing ALT-F4. When you are done, type ``exit'' to exit\n"
- "the fixit shell and be returned here.");
+ if (strcmp(variable_get(VAR_FIXIT_TTY), "standard") == 0) {
+ msgNotify("Waiting for fixit shell to exit. Go to VTY4 now by\n"
+ "typing ALT-F4. When you are done, type ``exit'' to exit\n"
+ "the fixit shell and be returned here.");
+ } else {
+ msgNotify("Waiting for fixit shell to exit.\n"
+ "When you are done, type ``exit'' to exit\n"
+ "the fixit shell and be returned here.");
+ }
(void)waitpid(child, &waitstatus, 0);
}
dialog_clear();
@@ -1086,6 +1095,7 @@ installVarDefaults(dialogMenuItem *self)
variable_set2(VAR_BROWSER_BINARY, "/usr/local/bin/lynx", 0);
variable_set2(VAR_FTP_STATE, "passive", 0);
variable_set2(VAR_NFS_SECURE, "NO", -1);
+ variable_set2(VAR_FIXIT_TTY, "standard", 0);
variable_set2(VAR_PKG_TMPDIR, "/usr/tmp", 0);
variable_set2(VAR_MEDIA_TIMEOUT, itoa(MEDIA_TIMEOUT), 0);
if (getpid() != 1)
diff --git a/release/sysinstall/options.c b/release/sysinstall/options.c
index 2d2b98b..b6fed23 100644
--- a/release/sysinstall/options.c
+++ b/release/sysinstall/options.c
@@ -37,6 +37,8 @@
#include "sysinstall.h"
#include <ctype.h>
+int fixitTtyWhich(dialogMenuItem *);
+
static char *
varCheck(Option opt)
{
@@ -140,6 +142,8 @@ static Option Options[] = {
OPT_IS_VAR, PKG_PROMPT, VAR_PKG_TMPDIR, varCheck },
{ "Newfs Args", "Default parameters for newfs(8)",
OPT_IS_VAR, NEWFS_PROMPT, VAR_NEWFS_ARGS, varCheck },
+{ "Fixit Console", "Which tty to use for the Fixit action.",
+ OPT_IS_FUNC, fixitTtyWhich, VAR_FIXIT_TTY, varCheck },
{ "Config save", "Whether or not to save installation kernel config changes",
OPT_IS_VAR, NULL, VAR_KGET, varCheck },
{ "Re-scan Devices", "Re-run sysinstall's initial device probe",
@@ -310,3 +314,20 @@ optionsEditor(dialogMenuItem *self)
return DITEM_SUCCESS;
}
+int
+fixitTtyWhich(dialogMenuItem *self)
+{
+ char *cp = variable_get(VAR_FIXIT_TTY);
+
+ if (!cp) {
+ msgConfirm("The Fix-it TTY setting is not set to anything!");
+ return DITEM_FAILURE;
+ }
+ else {
+ if (!strcmp(cp, "standard"))
+ variable_set2(VAR_FIXIT_TTY, "serial", 0);
+ else /* must be "serial" - wrap around */
+ variable_set2(VAR_FIXIT_TTY, "standard", 0);
+ }
+ return DITEM_SUCCESS;
+}
diff --git a/release/sysinstall/sysinstall.h b/release/sysinstall/sysinstall.h
index b3e6494..c772a9b 100644
--- a/release/sysinstall/sysinstall.h
+++ b/release/sysinstall/sysinstall.h
@@ -103,6 +103,7 @@
#define VAR_EXTRAS "ifconfig_"
#define VAR_COMMAND "command"
#define VAR_CONFIG_FILE "configFile"
+#define VAR_FIXIT_TTY "fixitTty"
#define VAR_FTP_DIR "ftpDirectory"
#define VAR_FTP_PASS "ftpPass"
#define VAR_FTP_PATH "_ftpPath"
diff --git a/usr.sbin/sade/install.c b/usr.sbin/sade/install.c
index db5719e..db3a990 100644
--- a/usr.sbin/sade/install.c
+++ b/usr.sbin/sade/install.c
@@ -398,17 +398,20 @@ fixit_common(void)
if (!file_readable(TERMCAP_FILE))
create_termcap();
if (!(child = fork())) {
- int i, fd;
+ int i, fd, fdstop;
struct termios foo;
extern int login_tty(int);
ioctl(0, TIOCNOTTY, NULL);
- for (i = getdtablesize(); i >= 0; --i)
+ fdstop = strcmp(variable_get(VAR_FIXIT_TTY), "serial") == 0 ? 3 : 0;
+ for (i = getdtablesize(); i >= fdstop; --i)
close(i);
- fd = open("/dev/ttyv3", O_RDWR);
- ioctl(0, TIOCSCTTY, &fd);
- dup2(0, 1);
- dup2(0, 2);
+ if (strcmp(variable_get(VAR_FIXIT_TTY), "standard") == 0) {
+ fd = open("/dev/ttyv3", O_RDWR);
+ ioctl(0, TIOCSCTTY, &fd);
+ dup2(0, 1);
+ dup2(0, 2);
+ }
DebugFD = 2;
if (login_tty(fd) == -1)
msgDebug("fixit: I can't set the controlling terminal.\n");
@@ -432,9 +435,15 @@ fixit_common(void)
}
else {
dialog_clear_norefresh();
- msgNotify("Waiting for fixit shell to exit. Go to VTY4 now by\n"
- "typing ALT-F4. When you are done, type ``exit'' to exit\n"
- "the fixit shell and be returned here.");
+ if (strcmp(variable_get(VAR_FIXIT_TTY), "standard") == 0) {
+ msgNotify("Waiting for fixit shell to exit. Go to VTY4 now by\n"
+ "typing ALT-F4. When you are done, type ``exit'' to exit\n"
+ "the fixit shell and be returned here.");
+ } else {
+ msgNotify("Waiting for fixit shell to exit.\n"
+ "When you are done, type ``exit'' to exit\n"
+ "the fixit shell and be returned here.");
+ }
(void)waitpid(child, &waitstatus, 0);
}
dialog_clear();
@@ -1086,6 +1095,7 @@ installVarDefaults(dialogMenuItem *self)
variable_set2(VAR_BROWSER_BINARY, "/usr/local/bin/lynx", 0);
variable_set2(VAR_FTP_STATE, "passive", 0);
variable_set2(VAR_NFS_SECURE, "NO", -1);
+ variable_set2(VAR_FIXIT_TTY, "standard", 0);
variable_set2(VAR_PKG_TMPDIR, "/usr/tmp", 0);
variable_set2(VAR_MEDIA_TIMEOUT, itoa(MEDIA_TIMEOUT), 0);
if (getpid() != 1)
diff --git a/usr.sbin/sade/sade.h b/usr.sbin/sade/sade.h
index b3e6494..c772a9b 100644
--- a/usr.sbin/sade/sade.h
+++ b/usr.sbin/sade/sade.h
@@ -103,6 +103,7 @@
#define VAR_EXTRAS "ifconfig_"
#define VAR_COMMAND "command"
#define VAR_CONFIG_FILE "configFile"
+#define VAR_FIXIT_TTY "fixitTty"
#define VAR_FTP_DIR "ftpDirectory"
#define VAR_FTP_PASS "ftpPass"
#define VAR_FTP_PATH "_ftpPath"
diff --git a/usr.sbin/sysinstall/install.c b/usr.sbin/sysinstall/install.c
index db5719e..db3a990 100644
--- a/usr.sbin/sysinstall/install.c
+++ b/usr.sbin/sysinstall/install.c
@@ -398,17 +398,20 @@ fixit_common(void)
if (!file_readable(TERMCAP_FILE))
create_termcap();
if (!(child = fork())) {
- int i, fd;
+ int i, fd, fdstop;
struct termios foo;
extern int login_tty(int);
ioctl(0, TIOCNOTTY, NULL);
- for (i = getdtablesize(); i >= 0; --i)
+ fdstop = strcmp(variable_get(VAR_FIXIT_TTY), "serial") == 0 ? 3 : 0;
+ for (i = getdtablesize(); i >= fdstop; --i)
close(i);
- fd = open("/dev/ttyv3", O_RDWR);
- ioctl(0, TIOCSCTTY, &fd);
- dup2(0, 1);
- dup2(0, 2);
+ if (strcmp(variable_get(VAR_FIXIT_TTY), "standard") == 0) {
+ fd = open("/dev/ttyv3", O_RDWR);
+ ioctl(0, TIOCSCTTY, &fd);
+ dup2(0, 1);
+ dup2(0, 2);
+ }
DebugFD = 2;
if (login_tty(fd) == -1)
msgDebug("fixit: I can't set the controlling terminal.\n");
@@ -432,9 +435,15 @@ fixit_common(void)
}
else {
dialog_clear_norefresh();
- msgNotify("Waiting for fixit shell to exit. Go to VTY4 now by\n"
- "typing ALT-F4. When you are done, type ``exit'' to exit\n"
- "the fixit shell and be returned here.");
+ if (strcmp(variable_get(VAR_FIXIT_TTY), "standard") == 0) {
+ msgNotify("Waiting for fixit shell to exit. Go to VTY4 now by\n"
+ "typing ALT-F4. When you are done, type ``exit'' to exit\n"
+ "the fixit shell and be returned here.");
+ } else {
+ msgNotify("Waiting for fixit shell to exit.\n"
+ "When you are done, type ``exit'' to exit\n"
+ "the fixit shell and be returned here.");
+ }
(void)waitpid(child, &waitstatus, 0);
}
dialog_clear();
@@ -1086,6 +1095,7 @@ installVarDefaults(dialogMenuItem *self)
variable_set2(VAR_BROWSER_BINARY, "/usr/local/bin/lynx", 0);
variable_set2(VAR_FTP_STATE, "passive", 0);
variable_set2(VAR_NFS_SECURE, "NO", -1);
+ variable_set2(VAR_FIXIT_TTY, "standard", 0);
variable_set2(VAR_PKG_TMPDIR, "/usr/tmp", 0);
variable_set2(VAR_MEDIA_TIMEOUT, itoa(MEDIA_TIMEOUT), 0);
if (getpid() != 1)
diff --git a/usr.sbin/sysinstall/options.c b/usr.sbin/sysinstall/options.c
index 2d2b98b..b6fed23 100644
--- a/usr.sbin/sysinstall/options.c
+++ b/usr.sbin/sysinstall/options.c
@@ -37,6 +37,8 @@
#include "sysinstall.h"
#include <ctype.h>
+int fixitTtyWhich(dialogMenuItem *);
+
static char *
varCheck(Option opt)
{
@@ -140,6 +142,8 @@ static Option Options[] = {
OPT_IS_VAR, PKG_PROMPT, VAR_PKG_TMPDIR, varCheck },
{ "Newfs Args", "Default parameters for newfs(8)",
OPT_IS_VAR, NEWFS_PROMPT, VAR_NEWFS_ARGS, varCheck },
+{ "Fixit Console", "Which tty to use for the Fixit action.",
+ OPT_IS_FUNC, fixitTtyWhich, VAR_FIXIT_TTY, varCheck },
{ "Config save", "Whether or not to save installation kernel config changes",
OPT_IS_VAR, NULL, VAR_KGET, varCheck },
{ "Re-scan Devices", "Re-run sysinstall's initial device probe",
@@ -310,3 +314,20 @@ optionsEditor(dialogMenuItem *self)
return DITEM_SUCCESS;
}
+int
+fixitTtyWhich(dialogMenuItem *self)
+{
+ char *cp = variable_get(VAR_FIXIT_TTY);
+
+ if (!cp) {
+ msgConfirm("The Fix-it TTY setting is not set to anything!");
+ return DITEM_FAILURE;
+ }
+ else {
+ if (!strcmp(cp, "standard"))
+ variable_set2(VAR_FIXIT_TTY, "serial", 0);
+ else /* must be "serial" - wrap around */
+ variable_set2(VAR_FIXIT_TTY, "standard", 0);
+ }
+ return DITEM_SUCCESS;
+}
diff --git a/usr.sbin/sysinstall/sysinstall.h b/usr.sbin/sysinstall/sysinstall.h
index b3e6494..c772a9b 100644
--- a/usr.sbin/sysinstall/sysinstall.h
+++ b/usr.sbin/sysinstall/sysinstall.h
@@ -103,6 +103,7 @@
#define VAR_EXTRAS "ifconfig_"
#define VAR_COMMAND "command"
#define VAR_CONFIG_FILE "configFile"
+#define VAR_FIXIT_TTY "fixitTty"
#define VAR_FTP_DIR "ftpDirectory"
#define VAR_FTP_PASS "ftpPass"
#define VAR_FTP_PATH "_ftpPath"
OpenPOWER on IntegriCloud