termcap.c revision 8756
1/* 2 * Copyright (c) 1994, Paul Richards. 3 * 4 * All rights reserved. 5 * 6 * This software may be used, modified, copied, distributed, and sold, in both 7 * source and binary form provided that the above copyright and these terms 8 * are retained, verbatim, as the first lines of this file. Under no 9 * circumstances is the author responsible for the proper functioning of this 10 * software, nor does the author assume any responsibility for damages 11 * incurred with its use. 12 */ 13 14#include <stdio.h> 15#include <stdlib.h> 16#include <string.h> 17#include <unistd.h> 18#include <stdarg.h> 19#include <fcntl.h> 20#include <sys/errno.h> 21#include <sys/ioctl.h> 22#include <machine/console.h> 23 24#include "sysinstall.h" 25 26int 27set_termcap(void) 28{ 29 char *term; 30 int stat; 31 32 OnVTY = OnSerial = FALSE; 33 if (getpid() != 1) 34 DebugFD = open("sysinstall.debug", O_WRONLY|O_CREAT|O_TRUNC, 0644); 35 else 36 RunningAsInit = TRUE; 37 term = getenv("TERM"); 38 stat = ioctl(STDERR_FILENO, GIO_COLOR, &ColorDisplay); 39 if (stat < 0) { 40 if (!term) { 41 if (setenv("TERM", "vt100", 1) < 0) 42 return -1; 43 if (setenv("TERMCAP", termcap_vt100, 1) < 0) 44 return -1; 45 } 46 if (DebugFD == -1) 47 DebugFD = dup(1); 48 OnSerial = TRUE; 49 } 50 else { 51 if (ColorDisplay) { 52 if (!term) { 53 if (setenv("TERM", "cons25", 1) < 0) 54 return -1; 55 if (setenv("TERMCAP", termcap_cons25, 1) < 0) 56 return -1; 57 } 58 } 59 else { 60 if (!term) { 61 if (setenv("TERM", "cons25-m", 1) < 0) 62 return -1; 63 if (setenv("TERMCAP", termcap_cons25_m, 1) < 0) 64 return -1; 65 } 66 } 67 if (DebugFD == -1) { 68 int i; 69 70 DebugFD = open("/dev/ttyv1", O_WRONLY); 71 i = ioctl(DebugFD, TIOCCONS, (char *)NULL); 72 msgDebug("ioctl(%d, TIOCCONS, NULL) = %d (%s)", DebugFD, i, !i ? "success" : strerror(errno)); 73 } 74 OnVTY = TRUE; 75 } 76 return 0; 77} 78