119304Speter/*- 219304Speter * Copyright (c) 1993, 1994 319304Speter * The Regents of the University of California. All rights reserved. 419304Speter * Copyright (c) 1993, 1994, 1995, 1996 519304Speter * Keith Bostic. All rights reserved. 619304Speter * 719304Speter * See the LICENSE file for redistribution information. 819304Speter */ 919304Speter 1019304Speter#include "config.h" 1119304Speter 1219304Speter#ifndef lint 1319304Speterstatic const char sccsid[] = "@(#)tk_screen.c 8.9 (Berkeley) 5/24/96"; 1419304Speter#endif /* not lint */ 1519304Speter 1619304Speter#include <sys/types.h> 1719304Speter#include <sys/queue.h> 1819304Speter 1919304Speter#include <bitstring.h> 2019304Speter#include <errno.h> 2119304Speter#include <signal.h> 2219304Speter#include <stdio.h> 2319304Speter#include <stdlib.h> 2419304Speter#include <string.h> 2519304Speter#include <termios.h> 2619304Speter#include <unistd.h> 2719304Speter 2819304Speter#include "../common/common.h" 2919304Speter#include "tki.h" 3019304Speter 3119304Speter/* 3219304Speter * tk_screen -- 3319304Speter * Initialize/shutdown the Tcl/Tk screen. 3419304Speter * 3519304Speter * PUBLIC: int tk_screen __P((SCR *, u_int32_t)); 3619304Speter */ 3719304Speterint 3819304Spetertk_screen(sp, flags) 3919304Speter SCR *sp; 4019304Speter u_int32_t flags; 4119304Speter{ 4219304Speter TK_PRIVATE *tkp; 4319304Speter 4419304Speter tkp = TKP(sp); 4519304Speter 4619304Speter /* See if we're already in the right mode. */ 4719304Speter if (LF_ISSET(SC_VI) && F_ISSET(sp, SC_SCR_VI)) 4819304Speter return (0); 4919304Speter 5019304Speter /* Ex isn't possible. */ 5119304Speter if (LF_ISSET(SC_EX)) 5219304Speter return (1); 5319304Speter 5419304Speter /* Initialize terminal based information. */ 5519304Speter if (tk_term_init(sp)) 5619304Speter return (1); 5719304Speter 5819304Speter /* Put up the first file name. */ 5919304Speter if (tk_rename(sp)) 6019304Speter return (1); 6119304Speter 6219304Speter F_SET(tkp, TK_SCR_VI_INIT); 6319304Speter return (0); 6419304Speter} 6519304Speter 6619304Speter/* 6719304Speter * tk_quit -- 6819304Speter * Shutdown the screens. 6919304Speter * 7019304Speter * PUBLIC: int tk_quit __P((GS *)); 7119304Speter */ 7219304Speterint 7319304Spetertk_quit(gp) 7419304Speter GS *gp; 7519304Speter{ 7619304Speter TK_PRIVATE *tkp; 7719304Speter int rval; 7819304Speter 7919304Speter /* Clean up the terminal mappings. */ 8019304Speter rval = tk_term_end(gp); 8119304Speter 8219304Speter tkp = GTKP(gp); 8319304Speter F_CLR(tkp, TK_SCR_VI_INIT); 8419304Speter 8519304Speter return (rval); 8619304Speter} 87