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