summaryrefslogtreecommitdiffstats
path: root/release/sysinstall/termcap.c
diff options
context:
space:
mode:
Diffstat (limited to 'release/sysinstall/termcap.c')
-rw-r--r--release/sysinstall/termcap.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/release/sysinstall/termcap.c b/release/sysinstall/termcap.c
new file mode 100644
index 0000000..3ab2088
--- /dev/null
+++ b/release/sysinstall/termcap.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 1994, Paul Richards.
+ *
+ * All rights reserved.
+ *
+ * This software may be used, modified, copied, distributed, and sold, in both
+ * source and binary form provided that the above copyright and these terms
+ * are retained, verbatim, as the first lines of this file. Under no
+ * circumstances is the author responsible for the proper functioning of this
+ * software, nor does the author assume any responsibility for damages
+ * incurred with its use.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <fcntl.h>
+#include <sys/errno.h>
+#include <sys/ioctl.h>
+#include <machine/console.h>
+
+#include "sysinstall.h"
+
+int
+set_termcap(void)
+{
+ char *term;
+ int stat;
+
+ OnVTY = RunningAsInit = FALSE;
+
+ term = getenv("TERM");
+ stat = ioctl(STDERR_FILENO, GIO_COLOR, &ColorDisplay);
+
+ if (getpid() != 1)
+ DebugFD = open("sysinstall.debug", O_WRONLY|O_CREAT|O_TRUNC, 0644);
+ else
+ RunningAsInit = TRUE;
+
+ if (stat < 0) {
+ if (!term) {
+ if (setenv("TERM", "vt100", 1) < 0)
+ return -1;
+ if (setenv("TERMCAP", termcap_vt100, 1) < 0)
+ return -1;
+ }
+ if (DebugFD == -1)
+ DebugFD = dup(1);
+ }
+ else {
+ int i, on;
+
+ DebugFD = open("/dev/ttyv1", O_WRONLY);
+ on = 1;
+ i = ioctl(DebugFD, TIOCCONS, (char *)&on);
+ msgDebug("ioctl(%d, TIOCCONS, NULL) = %d (%s)\n", DebugFD, i, !i ? "success" : strerror(errno));
+ OnVTY = TRUE;
+ if (ColorDisplay) {
+ if (!term) {
+ if (setenv("TERM", "cons25", 1) < 0)
+ return -1;
+ if (setenv("TERMCAP", termcap_cons25, 1) < 0)
+ return -1;
+ }
+ }
+ else {
+ if (!term) {
+ if (setenv("TERM", "cons25-m", 1) < 0)
+ return -1;
+ if (setenv("TERMCAP", termcap_cons25_m, 1) < 0)
+ return -1;
+ }
+ }
+ }
+ return 0;
+}
OpenPOWER on IntegriCloud