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 *
9254225Speter *	$Id: cl.h,v 10.34 2011/08/15 20:07:32 zy Exp $
1019304Speter */
1119304Speter
12254225Speter#ifdef USE_WIDECHAR
13254225Speter#define _XOPEN_SOURCE_EXTENDED
14254225Speter#endif
15254225Speter#ifdef HAVE_NCURSES_H
16254225Speter#include <ncurses.h>
17254225Speter#else
18254225Speter#include <curses.h>
19254225Speter#endif
20254225Speter
2119304Spetertypedef struct _cl_private {
22254225Speter	char	 ibuf[256];	/* Input keys. */
2319304Speter
24254225Speter	size_t	 skip;		/* Remaining keys. */
25254225Speter
26254225Speter	CONVWIN	 cw;		/* Conversion buffer. */
27254225Speter
2819304Speter	int	 eof_count;	/* EOF count. */
2919304Speter
3019304Speter	struct termios orig;	/* Original terminal values. */
3119304Speter	struct termios ex_enter;/* Terminal values to enter ex. */
3219304Speter	struct termios vi_enter;/* Terminal values to enter vi. */
3319304Speter
3419304Speter	char	*el;		/* Clear to EOL terminal string. */
3519304Speter	char	*cup;		/* Cursor movement terminal string. */
3619304Speter	char	*cuu1;		/* Cursor up terminal string. */
3719304Speter	char	*rmso, *smso;	/* Inverse video terminal strings. */
3819304Speter	char	*smcup, *rmcup;	/* Terminal start/stop strings. */
3919304Speter
40254225Speter	char	*oname;		/* Original screen window name. */
41254225Speter
42254225Speter	SCR	*focus;		/* Screen that has the "focus". */
43254225Speter
4419304Speter	int	 killersig;	/* Killer signal. */
4519304Speter#define	INDX_HUP	0
4619304Speter#define	INDX_INT	1
4719304Speter#define	INDX_TERM	2
4819304Speter#define	INDX_WINCH	3
4919304Speter#define	INDX_MAX	4	/* Original signal information. */
5019304Speter	struct sigaction oact[INDX_MAX];
5119304Speter
5219304Speter	enum {			/* Tty group write mode. */
5319304Speter	    TGW_UNKNOWN=0, TGW_SET, TGW_UNSET } tgw;
5419304Speter
5519304Speter	enum {			/* Terminal initialization strings. */
5619304Speter	    TE_SENT=0, TI_SENT } ti_te;
5719304Speter
5819304Speter#define	CL_IN_EX	0x0001	/* Currently running ex. */
59254225Speter#define	CL_LAYOUT	0x0002	/* Screen layout changed. */
60254225Speter#define	CL_RENAME	0x0004	/* X11 xterm icon/window renamed. */
61254225Speter#define	CL_RENAME_OK	0x0008	/* User wants the windows renamed. */
62254225Speter#define	CL_SCR_EX_INIT	0x0010	/* Ex screen initialized. */
63254225Speter#define	CL_SCR_VI_INIT	0x0020	/* Vi screen initialized. */
64254225Speter#define	CL_SIGHUP	0x0040	/* SIGHUP arrived. */
65254225Speter#define	CL_SIGINT	0x0080	/* SIGINT arrived. */
66254225Speter#define	CL_SIGTERM	0x0100	/* SIGTERM arrived. */
67254225Speter#define	CL_SIGWINCH	0x0200	/* SIGWINCH arrived. */
68254225Speter#define	CL_STDIN_TTY	0x0400	/* Talking to a terminal. */
6919304Speter	u_int32_t flags;
7019304Speter} CL_PRIVATE;
7119304Speter
7219304Speter#define	CLP(sp)		((CL_PRIVATE *)((sp)->gp->cl_private))
7319304Speter#define	GCLP(gp)	((CL_PRIVATE *)gp->cl_private)
74254225Speter#define	CLSP(sp)	((WINDOW *)((sp)->cl_private))
7519304Speter
7619304Speter/* Return possibilities from the keyboard read routine. */
7719304Spetertypedef enum { INP_OK=0, INP_EOF, INP_ERR, INP_INTR, INP_TIMEOUT } input_t;
7819304Speter
79254225Speter/* The screen position relative to a specific window. */
80254225Speter#define	RCNO(sp, cno)	(cno)
81254225Speter#define	RLNO(sp, lno)	(lno)
8219304Speter
8319304Speter/*
8419304Speter * XXX
8519304Speter * Some implementations of curses.h don't define these for us.  Used for
8619304Speter * compatibility only.
8719304Speter */
8819304Speter#ifndef TRUE
8919304Speter#define	TRUE	1
9019304Speter#endif
9119304Speter#ifndef FALSE
9219304Speter#define	FALSE	0
9319304Speter#endif
9419304Speter
95254225Speter#include "extern.h"
96