xref: /illumos-gate/usr/src/ucblib/libcurses/initscr.c (revision 7a6d80f1660abd4755c68cbd094d4a914681d26e)
1 /*
2  * Copyright 2001 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
7 /*	  All Rights Reserved  	*/
8 
9 /*
10  * Copyright (c) 1980 Regents of the University of California.
11  * All rights reserved.  The Berkeley software License Agreement
12  * specifies the terms and conditions for redistribution.
13  */
14 
15 /*LINTLIBRARY*/
16 
17 #ifndef lint
18 static char
19 sccsid[] = "@(#)initscr.c 1.6 88/02/08 SMI"; /* from UCB 5.1 85/06/07 */
20 #endif /* not lint */
21 
22 #include	"curses.ext"
23 #include	<term.h>
24 #include	<stdlib.h>
25 #include	<signal.h>
26 
27 /*
28  *	This routine initializes the current and standard screen.
29  */
30 
31 WINDOW *
32 initscr(void)
33 {
34 	char	*sp;
35 
36 #ifdef DEBUG
37 	fprintf(outf, "INITSCR()\n");
38 #endif
39 	if (My_term)
40 		(void) setterm(Def_term);
41 	else {
42 		(void) gettmode();
43 		if ((sp = getenv("TERM")) == NULL)
44 			sp = Def_term;
45 		(void) setterm(sp);
46 #ifdef DEBUG
47 		fprintf(outf, "INITSCR: term = %s\n", sp);
48 #endif
49 	}
50 	(void) _puts(TI);
51 	(void) _puts(VS);
52 #ifdef SIGTSTP
53 	(void) signal(SIGTSTP, (void(*)(int))tstp);
54 #endif
55 	if (curscr != NULL) {
56 #ifdef DEBUG
57 		fprintf(outf, "INITSCR: curscr = 0%o\n", curscr);
58 #endif
59 		(void) delwin(curscr);
60 	}
61 #ifdef DEBUG
62 	fprintf(outf, "LINES = %d, COLS = %d\n", LINES, COLS);
63 #endif
64 	if ((curscr = newwin(LINES, COLS, 0, 0)) == ERR)
65 		return (ERR);
66 	clearok(curscr, TRUE);
67 	curscr->_flags &= ~_FULLLINE;
68 	if (stdscr != NULL) {
69 #ifdef DEBUG
70 		fprintf(outf, "INITSCR: stdscr = 0%o\n", stdscr);
71 #endif
72 		(void) delwin(stdscr);
73 	}
74 	stdscr = newwin(LINES, COLS, 0, 0);
75 	return (stdscr);
76 }
77