1 /*-
2  * Copyright (c) 1993, 1994
3  *	The Regents of the University of California.  All rights reserved.
4  * Copyright (c) 1993, 1994, 1995, 1996
5  *	Keith Bostic.  All rights reserved.
6  *
7  * See the LICENSE file for redistribution information.
8  */
9 
10 #include "config.h"
11 
12 #ifndef lint
13 static const char sccsid[] = "@(#)tk_screen.c	8.9 (Berkeley) 5/24/96";
14 #endif /* not lint */
15 
16 #include <sys/types.h>
17 #include <sys/queue.h>
18 
19 #include <bitstring.h>
20 #include <errno.h>
21 #include <signal.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25 #include <termios.h>
26 #include <unistd.h>
27 
28 #include "../common/common.h"
29 #include "tki.h"
30 
31 /*
32  * tk_screen --
33  *	Initialize/shutdown the Tcl/Tk screen.
34  *
35  * PUBLIC: int tk_screen __P((SCR *, u_int32_t));
36  */
37 int
tk_screen(sp,flags)38 tk_screen(sp, flags)
39 	SCR *sp;
40 	u_int32_t flags;
41 {
42 	TK_PRIVATE *tkp;
43 
44 	tkp = TKP(sp);
45 
46 	/* See if we're already in the right mode. */
47 	if (LF_ISSET(SC_VI) && F_ISSET(sp, SC_SCR_VI))
48 		return (0);
49 
50 	/* Ex isn't possible. */
51 	if (LF_ISSET(SC_EX))
52 		return (1);
53 
54 	/* Initialize terminal based information. */
55 	if (tk_term_init(sp))
56 		return (1);
57 
58 	/* Put up the first file name. */
59 	if (tk_rename(sp))
60 		return (1);
61 
62 	F_SET(tkp, TK_SCR_VI_INIT);
63 	return (0);
64 }
65 
66 /*
67  * tk_quit --
68  *	Shutdown the screens.
69  *
70  * PUBLIC: int tk_quit __P((GS *));
71  */
72 int
tk_quit(gp)73 tk_quit(gp)
74 	GS *gp;
75 {
76 	TK_PRIVATE *tkp;
77 	int rval;
78 
79 	/* Clean up the terminal mappings. */
80 	rval = tk_term_end(gp);
81 
82 	tkp = GTKP(gp);
83 	F_CLR(tkp, TK_SCR_VI_INIT);
84 
85 	return (rval);
86 }
87