summaryrefslogtreecommitdiff
path: root/usr/src/lib/libcurses/screen/curses.ed
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libcurses/screen/curses.ed')
-rw-r--r--usr/src/lib/libcurses/screen/curses.ed1444
1 files changed, 1444 insertions, 0 deletions
diff --git a/usr/src/lib/libcurses/screen/curses.ed b/usr/src/lib/libcurses/screen/curses.ed
new file mode 100644
index 0000000000..292ada4764
--- /dev/null
+++ b/usr/src/lib/libcurses/screen/curses.ed
@@ -0,0 +1,1444 @@
+e keycaps
+H
+g/.*KEY_/s//KEY_/
+g/KEY_F([1-9]/d
+g'\(KEY_[^,]*\),[ ]*\([0-9][0-9]*\),[ ]*\(.*\)'s''#define \1 \2 /* \3 */'
+w ./tmp/keycaps
+e !sort +2n ./tmp/keycaps
+g'\(KEY_[^ ] \)'s''\1 '
+g'\(KEY_[^ ][^ ] \)'s''\1 '
+g'\(KEY_[^ ][^ ][^ ] \)'s''\1 '
+1i
+/* Funny "characters" enabled for various special function keys for input */
+/* This list is created from caps and curses.ed. Do not edit it! */
+#define KEY_MIN 0401 /* Minimum curses key */
+#define KEY_BREAK 0401 /* break key (unreliable) */
+.
+/KEY_F(0)/s//KEY_F0 /
+a
+#define KEY_F(n) (KEY_F0+(n)) /* Space for 64 function keys */
+ /* is reserved. */
+.
+/KEY_ENTER/a
+#define KEY_SRESET 0530 /* soft (partial) reset (unreliable) */
+#define KEY_RESET 0531 /* reset or hard reset (unreliable) */
+.
+/KEY_A1/i
+ /* The keypad is arranged like this: */
+ /* a1 up a3 */
+ /* left b2 right */
+ /* c1 down c3 */
+.
+$a
+#define KEY_MAX 0777 /* Maximum curses key */
+.
+1i
+#ifndef _CURSES_H
+#define _CURSES_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+/*
+ * curses.h - this file is automatically made from caps and
+ * curses.ed. Don't make changes directly to curses.h!
+ */
+
+#include <widec.h>
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CSMAX 4
+
+/*
+ * This trick is used to distinguish between SYSV and V7 systems.
+ * We assume that L_ctermid is only defined in stdio.h in SYSV
+ * systems, but not in V7 or Berkeley UNIX.
+ */
+#ifdef L_ctermid
+#ifdef SYSV
+#undef SYSV
+#endif
+#define SYSV
+#endif
+/* Some V7 systems define L_ctermid - we list those here */
+#ifdef BSD
+#undef SYSV
+#endif
+
+#ifdef SYSV
+
+#include <termio.h>
+typedef struct termio SGTTY;
+typedef struct termios SGTTYS;
+
+#else /* !SYSV */
+
+#ifndef _SGTTYB_
+#include <sgtty.h>
+#endif /* _SGTTYB_ */
+typedef struct sgttyb SGTTY;
+
+/*
+ * Here we attempt to improve portability by providing some #defines
+ * for SYSV functions on non-SYSV systems.
+ */
+#define memcpy(dst, src, len) bcopy((src), (dst), (len))
+#define strchr index
+#define strrchr rindex
+#endif /* SYSV */
+
+/*
+ * bool is a built-in type in standard C++ and as such is not
+ * defined here when using standard C++. However, the GNU compiler
+ * fixincludes utility nonetheless creates it's own version of this
+ * header for use by gcc and g++. In that version it adds a redundant
+ * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
+ * header we need to include the following magic comment:
+ *
+ * we must use the C++ compiler's type
+ *
+ * The above comment should not be removed or changed until GNU
+ * gcc/fixinc/inclhack.def is updated to bypass this header.
+ */
+#if !defined(__cplusplus) && !defined(_BOOL)
+typedef char bool;
+#endif /* !defined(__cplusplus) && !defined(_BOOL) */
+
+#define _VR3_COMPAT_CODE
+/*
+ * chtype is the type used to store a character together with attributes.
+ * It can be set to "char" to save space, or "long" to get more attributes.
+ */
+#ifdef CHTYPE
+typedef CHTYPE chtype;
+#else
+#ifdef _LP64
+typedef unsigned int chtype;
+#else
+typedef unsigned long chtype;
+#endif /* _LP64 */
+#endif /* CHTYPE */
+
+/*
+ * Define for the 'old' definition of chtype is required
+ * when we are running in compatibility mode
+ */
+#ifdef _VR3_COMPAT_CODE
+typedef unsigned short _ochtype;
+#endif
+
+/* TRUE and FALSE get defined so many times, */
+/* let's not get in the way of other definitions. */
+#if !defined(TRUE) || ((TRUE) != 1)
+#define TRUE (1)
+#endif
+#if !defined(FALSE) || ((FALSE) != 0)
+#define FALSE (0)
+#endif
+#if !defined(ERR) || ((ERR) != -1)
+#define ERR (-1)
+#endif
+#if !defined(OK) || ((OK) != 0)
+#define OK (0)
+#endif
+
+/* short-hand notations */
+typedef struct _win_st WINDOW;
+typedef struct screen SCREEN;
+typedef struct _Mouse MOUSE_STATUS;
+
+struct _win_st
+{
+ short _cury, _curx; /* current coordinates */
+ short _maxy, _maxx; /* max coordinates */
+ short _begy, _begx; /* (0,0) screen coordinates */
+ char _flags;
+ short _yoffset; /* actual begy is _begy+_yoffset */
+ bool _clear, /* clearok() info */
+ _leave, /* leaveok() info */
+ _immed, /* window in immediate mode */
+ _sync; /* auto syncup of parent */
+ WINDOW *_padwin; /* "pad" area for current window */
+#ifdef _VR3_COMPAT_CODE
+ _ochtype **_y16; /* MUST stay at this offset in WINDOW */
+#endif
+ short *_firstch; /* first change in line */
+ short *_lastch; /* last change in line */
+ short _tmarg, _bmarg; /* scrolling region bounds */
+ /* MUST stay at this offset in WINDOW */
+ unsigned _scroll : 1; /* scrollok() info */
+ unsigned _use_idl : 1;
+ unsigned _use_keypad : 1;
+ unsigned _notimeout : 1;
+ unsigned _use_idc : 1;
+ chtype _attrs; /* current window attributes */
+ chtype _bkgd; /* background, normally blank */
+ int _delay; /* delay period on wgetch */
+ /* 0: for nodelay */
+ /* <0: for infinite delay */
+ /* >0: delay time in millisec */
+ short _ndescs; /* number of descendants */
+ short _parx, _pary; /* coords relative to parent (0,0) */
+ WINDOW *_parent; /* the parent if this is a subwin */
+ chtype **_y; /* lines of data */
+ short _nbyte; /* number of bytes to come */
+ short _index; /* index to hold coming char */
+ char _waitc[CSMAX]; /* array to hold partial m-width char */
+ bool _insmode; /* TRUE for inserting, */
+ /* FALSE for adding */
+};
+
+/* _lastch is initially set to this, _firstch is set to win->_maxx */
+#define _NOCHANGE -1
+#define _INFINITY 16000 /* no line can be longer than this */
+
+/* values for win->_flags */
+#define _ISPAD 001
+#define _WINCHANGED 002
+#define _WINMOVED 004
+#define _WINSDEL 010
+#define _CANT_BE_IMMED 020
+#define _WIN_ADD_ONE 040
+#define _WIN_INS_ONE 100
+
+struct _Mouse {
+ int x, y;
+ short button[3];
+ int changes;
+};
+
+#define CURS_STUPID 0
+#define CURS_UNKNOWN 1
+#define CURS_BAD_MALLOC 2
+
+/*
+ * Various tricks to shut up lint about things that are perfectly fine.
+ */
+#if defined(__lint) && !defined(CURSES) /* if not internal to curses source */
+struct screen {
+ int _nobody_;
+};
+#endif /* __lint */
+
+/* common external variables */
+
+extern int LINES, COLS, TABSIZE, COLORS, COLOR_PAIRS;
+
+extern short curs_errno;
+
+extern WINDOW *stdscr, *curscr;
+
+extern MOUSE_STATUS Mouse_status;
+
+extern char ttytype[];
+
+extern char curs_parm_err[],
+ *curs_err_strings[];
+
+/* Function declarations */
+
+#ifdef _VR3_COMPAT_CODE
+
+extern _ochtype *acs_map;
+extern chtype *acs32map;
+
+/* definitions for Vr3 source compatibility */
+
+#define initscr initscr32
+#define newterm newterm32
+#define waddch w32addch
+#define wechochar w32echochar
+#define pechochar p32echochar
+#define winsch w32insch
+#define vidputs vid32puts
+#define vidattr vid32attr
+#define wattroff w32attroff
+#define wattron w32attron
+#define wattrset w32attrset
+#define acs_map acs32map
+#define box box32
+
+#ifdef __STDC__
+extern WINDOW *initscr(void);
+extern SCREEN *newterm(char *, FILE *, FILE *);
+#else
+extern WINDOW *initscr();
+extern SCREEN *newterm();
+#endif
+
+/* declarations for mini-curses */
+
+#ifdef __STDC__
+extern WINDOW *m_initscr(void);
+
+extern SCREEN *m_newterm(char *, FILE *, FILE *);
+
+extern int m_addch(int), m_addstr(char *), m_clear(void), m_erase(void),
+ m_move(int, int), m_refresh(void);
+
+#else /* __STDC__ */
+extern WINDOW *m_initscr();
+
+extern SCREEN *m_newterm();
+
+extern int m_addch(), m_addstr(), m_clear(), m_erase(),
+ m_move(), m_refresh();
+
+#endif /* __STDC__ */
+
+#else /* _VR3_COMPAT_CODE */
+
+extern chtype *acs_map;
+
+#endif /* _VR3_COMPAT_CODE */
+
+#ifdef __STDC__
+
+extern SCREEN *newscreen(char *, int, int, int, FILE *, FILE *);
+extern SCREEN *setcurscreen(SCREEN *);
+
+extern WINDOW *initscr(void);
+extern WINDOW *newwin(int, int, int, int);
+extern WINDOW *newpad(int, int);
+extern WINDOW *derwin(WINDOW *, int, int, int, int);
+extern WINDOW *dupwin(WINDOW *);
+extern WINDOW *getwin(FILE *);
+
+extern int wgetch(WINDOW *); /* it can return KEY_*, for instance. */
+
+extern char *longname(void); /* long name of terminal */
+extern char *termname(void); /* effective terminal name */
+extern char *keyname(int); /* name of token returned by wgetch() */
+extern char *slk_label(int);
+extern char erasechar(void);
+extern char killchar(void);
+extern char *unctrl(int);
+
+extern chtype termattrs(void);
+
+extern void vidupdate(chtype, chtype, int (*)(char));
+extern void wsyncup(WINDOW *);
+extern void wsyncdown(WINDOW *);
+extern void delscreen(SCREEN *);
+extern void curserr(void);
+extern void _setqiflush(int);
+extern void wcursyncup(WINDOW *);
+
+extern int cbreak(void);
+extern int nocbreak(void);
+extern int reset_prog_mode(void);
+extern int reset_shell_mode(void);
+extern int def_prog_mode(void);
+extern int _setecho(int);
+extern int _setnonl(int);
+extern int def_shell_mode(void);
+extern int raw(void);
+extern int savetty(void);
+extern int traceon(void);
+extern int _meta(int);
+extern int traceoff(void);
+extern int noraw(void);
+extern int flushinp(void);
+extern int _getsyx(int *, int *);
+extern int _ring(bool);
+extern int resetty(void);
+extern int ripoffline(int, int (*)(WINDOW *, int));
+extern int setsyx(int, int);
+extern int slk_refresh(void);
+extern int slk_restore(void);
+extern int wstandend(WINDOW *);
+extern int wstandout(WINDOW *);
+extern int wattroff(WINDOW *, chtype);
+extern int wattron(WINDOW *, chtype);
+extern int wattrset(WINDOW *, chtype);
+extern int wrefresh(WINDOW *);
+
+extern int copywin(WINDOW *, WINDOW *, int, int, int, int, int, int, int);
+extern int curs_set(int);
+extern int delay_output(int);
+extern int delwin(WINDOW *);
+extern int doupdate(void);
+extern int drainio(int);
+extern int endwin(void);
+extern int isendwin(void);
+extern int baudrate(void);
+extern int has_ic(void);
+extern int has_il(void);
+extern int keypad(WINDOW *, bool);
+extern int mvcur(int, int, int, int);
+
+extern int mvprintw(int, int, ...);
+extern int mvscanw(int, int, ...);
+extern int mvwprintw(WINDOW *, int, int, ...);
+extern int mvwscanw(WINDOW *, int, int, ...);
+extern int printw(char *, ...);
+extern int scanw(char *, ...);
+extern int wprintw(WINDOW *, ...);
+extern int wscanw(WINDOW *, ...);
+
+ /* __va_list is the ANSI-C safe definition of the */
+ /* va_list type as allowed to be defined in stdlib.h. */
+ /* <stdio.h> provides the nested include of <va_list.h> */
+ /* which provides this namespace safe definition. */
+ /* Either <stdarg.h> or <varargs.h> must be included to */
+ /* use these interfaces. */
+
+extern int vwprintw(WINDOW *, char *, __va_list);
+extern int vwscanw(WINDOW *, char *, __va_list);
+
+extern int mvwin(WINDOW *, int, int);
+extern int mvderwin(WINDOW *, int, int);
+extern int napms(int);
+extern int newkey(char *, short, bool);
+extern int filter(void);
+extern int pechochar(WINDOW *, chtype);
+extern int pnoutrefresh(WINDOW *, int, int, int, int, int, int);
+extern int prefresh(WINDOW *, int, int, int, int, int, int);
+
+extern int putwin(WINDOW *, FILE *);
+extern int wredrawln(WINDOW *, int, int);
+extern int scr_dump(char *);
+extern int setupterm(char *, int, int *);
+
+extern int slk_attron(chtype);
+extern int slk_attroff(chtype);
+extern int slk_attrset(chtype);
+extern int slk_clear(void);
+extern int slk_noutrefresh(void);
+extern int slk_set(int, char *, int);
+extern int slk_start(int, int *);
+extern int slk_touch(void);
+extern int start_color(void);
+extern int typeahead(int);
+
+extern bool can_change_color(void);
+extern bool has_colors(void);
+
+extern int waddch(WINDOW *, chtype);
+extern int waddchnstr(WINDOW *, chtype *, int);
+extern int waddnstr(WINDOW *, char *, int);
+extern int wbkgd(WINDOW *, chtype);
+extern int wborder(WINDOW *, chtype, chtype, chtype, chtype,
+ chtype, chtype, chtype, chtype);
+extern int wclrtobot(WINDOW *);
+extern int wclrtoeol(WINDOW *);
+extern int wdelch(WINDOW *);
+extern int wechochar(WINDOW *, chtype);
+extern int wgetstr(WINDOW *, char *);
+extern int wgetnstr(WINDOW *, char *, int);
+extern int whline(WINDOW *, chtype, int);
+extern int wvline(WINDOW *, chtype, int);
+extern int winchnstr(WINDOW *, chtype *, int);
+extern int winchstr(WINDOW *, chtype *);
+extern int winnstr(WINDOW *, char *, int);
+extern int winsch(WINDOW *, chtype);
+extern int winsdelln(WINDOW *, int); /* internal */
+extern int winsnstr(WINDOW *, char *, int);
+extern int winstr(WINDOW *, char *);
+extern int wmove(WINDOW *, int, int);
+extern int wnoutrefresh(WINDOW *);
+extern int wredrawln(WINDOW *, int, int);
+extern int wscrl(WINDOW *, int);
+extern int wsetscrreg(WINDOW *, int, int);
+extern int wtouchln(WINDOW *, int, int, int);
+
+extern int crmode(void);
+extern int nocrmode(void);
+extern int ungetch(int);
+
+extern int mouse_set(long int);
+extern int mouse_on(long int);
+extern int mouse_off(long int);
+extern int request_mouse_pos(void);
+extern int map_button(unsigned long);
+
+extern void wmouse_position(WINDOW *, int *, int *);
+
+extern unsigned long getmouse(void), getbmap(void);
+
+ /* the following declarations take integers as arguments */
+ /* to keep the CI5 compiler happy. what we really want */
+ /* to pass is given in comments. (by the way, we don't */
+ /* save anything by passing short or bool, since compiler */
+ /* expands them to integers any way */
+
+extern int pair_content(short, short *, short *);
+extern int color_content(short, short *, short *, short *); /* as above */
+extern int init_color(short, short, short, short);
+extern int init_pair(short, short, short);
+extern int idlok(WINDOW *, bool);
+
+extern void immedok(WINDOW *, bool);
+
+extern chtype winwch(WINDOW *);
+
+extern int pechowchar(WINDOW *, chtype);
+extern int ungetwch(const wchar_t);
+extern int waddnwstr(WINDOW *, wchar_t *, int);
+extern int waddwch(WINDOW *, chtype);
+extern int waddwchnstr(WINDOW *, chtype *, int);
+extern int wechowchar(WINDOW *, chtype);
+extern int wgetnwstr(WINDOW *, wchar_t *, int);
+extern int wgetwch(WINDOW *);
+extern int wgetwstr(WINDOW *, wchar_t *);
+extern int winnwstr(WINDOW *, wchar_t *, int);
+extern int winsnwstr(WINDOW *, wchar_t *, int);
+extern int winswch(WINDOW *, chtype);
+extern int winwchnstr(WINDOW *, chtype *, int);
+extern int winwstr(WINDOW *, wchar_t *);
+
+#else /* __STDC__ */
+
+extern SCREEN *newscreen(), /* termname, lines, cols, tabsiz, fout, fin */
+ *setcurscreen(); /* screenptr */
+
+extern WINDOW *initscr(),
+ *newwin(), /* nlines, ncols, begy, begx */
+ *newpad(), /* nlines, ncols */
+ *derwin(), /* orig, nlines, ncols, begy, begx */
+ *dupwin(), /* orig */
+ *getwin(); /* file */
+
+extern int wgetch(); /* because it can return KEY_*, for instance. */
+
+extern char *longname(), /* long name of terminal */
+ *termname(), /* effective terminal name */
+ *keyname(), /* (int) name of token returned by wgetch() */
+ *slk_label(), /* index */
+ erasechar(),
+ killchar(),
+ *unctrl();
+
+extern chtype termattrs();
+
+extern void vidupdate(), wsyncup(), wsyncdown(),
+ delkeymap(),
+ delscreen(), curserr(),
+ _setqiflush(),
+ immedok(),
+ wcursyncup();
+
+extern int cbreak(), nocbreak(),
+ reset_prog_mode(), reset_shell_mode(), def_prog_mode(),
+ _setecho(), _setnonl(),
+ def_shell_mode(), raw(),
+ savetty(), traceon(), _meta(),
+ traceoff(), noraw(), flushinp(), _getsyx(),
+ _ring(), resetty(), ripoffline(), setsyx(), slk_refresh(),
+ slk_restore(), wstandend(), wstandout(),
+ wattroff(), wattron(), wattrset(), wrefresh();
+
+extern int color_cont(), copywin(), curs_set(), delay_output(), delwin(),
+ doupdate(), drainio(), endwin(), isendwin(),
+ baudrate(), has_ic(), has_il(), idlok(),
+ init_color(), init_pair(), keypad(), mvcur();
+
+extern int mvprintw(), mvscanw(), mvwprintw(), mvwscanw(),
+ printw(), scanw(), wprintw(), wscanw(), vwprintw(), vwscanw();
+
+extern int mvwin(), mvderwin(), napms(), newkey(), filter(),
+ pair_content(), pechochar(), pnoutrefresh(), prefresh();
+
+extern int putwin(), wredrawln(), scr_dump(), setupterm();
+
+extern int slk_attrof(), slk_attrof(), slk_attrset(),
+ slk_clear(), slk_noutrefresh(), slk_set(),
+ slk_start(), slk_touch(), start_color(),
+ typeahead();
+
+extern bool can_change_color(), has_colors();
+
+extern int waddch(), waddchnstr(), waddnstr(), wbkgd(),
+ wborder(), wclrtobot(), wclrtoeol(), wdelch(), wechochar(),
+ wgetstr(), wgetnstr(), whline(), wvline(), winchnstr(),
+ winchstr(), winnstr(), winsch(),
+ winsdelln(), /* internal */
+ winsnstr(), winstr(), wmove(), wnoutrefresh(), wredrawln(),
+ wscrl(), wsetscrreg(), wtouchln();
+
+extern int crmode(), nocrmode(), ungetch();
+
+extern int mouse_set(), mouse_on(), mouse_off(),
+ request_mouse_pos(), map_button();
+
+extern void wmouse_position();
+
+extern unsigned long getmouse(), getbmap();
+
+extern chtype winwch();
+
+extern int pechowchar(), ungetwch(), waddnwstr(), waddwch(),
+ waddwchnstr(), wechowchar(), wgetnwstr(), wgetwch(),
+ wgetwstr(), winnwstr(), winsnwstr(), winswch(),
+ winwchnstr(), winwstr();
+
+#endif /* __STDC__ */
+
+#define getsyx(y, x) _getsyx(&(y), &(x))
+
+/*
+ * Functions to get at the window structure.
+ */
+
+#define getyx(win, y, x) ((y) = getcury(win), (x) = getcurx(win))
+#define getbegyx(win, y, x) ((y) = getbegy(win), (x) = getbegx(win))
+#define getmaxyx(win, y, x) ((y) = getmaxy(win), (x) = getmaxx(win))
+#define getparyx(win, y, x) ((y) = getpary(win), (x) = getparx(win))
+
+#if defined(CURS_PERFORMANCE) && !defined(__lint)
+#define getcury(win) ((win)->_cury)
+#define getcurx(win) ((win)->_curx)
+#define getbegy(win) ((win)->_begy)
+#define getbegx(win) ((win)->_begx)
+#define getmaxy(win) ((win)->_maxy)
+#define getmaxx(win) ((win)->_maxx)
+#define getpary(win) ((win)->_pary)
+#define getparx(win) ((win)->_parx)
+#define getbkgd(win) ((win)->_bkgd)
+#define getattrs(win) ((win)->_attrs)
+#else /* defined(CURS_PERFORMANCE) && !defined(__lint) */
+
+#ifdef __STDC__
+extern int getcury(WINDOW *);
+extern int getcurx(WINDOW *);
+extern int getbegy(WINDOW *);
+extern int getbegx(WINDOW *);
+extern int getmaxy(WINDOW *);
+extern int getmaxx(WINDOW *);
+extern int getpary(WINDOW *);
+extern int getparx(WINDOW *);
+
+extern chtype getbkgd(WINDOW *);
+extern chtype getattrs(WINDOW *);
+
+#else /* __STDC__ */
+extern int getcury(), getcurx(), getbegy(), getbegx(),
+ getmaxy(), getmaxx(), getpary(), getparx();
+
+extern chtype getbkgd(), getattrs();
+
+#endif /* __STDC__ */
+#endif /* defined(CURS_PERFORMANCE) && !defined(__lint) */
+
+#if defined(NOMACROS) || defined(__lint)
+
+#ifdef __STDC__
+
+extern SCREEN *newterm(char *, FILE *, FILE *);
+extern SCREEN *set_term(SCREEN *);
+
+extern WINDOW *subpad(WINDOW *, int, int, int, int);
+extern WINDOW *subwin(WINDOW *, int, int, int, int);
+
+extern char *unctrl(int);
+
+extern chtype inch(void);
+extern chtype winch(WINDOW *);
+extern chtype mvinch(int, int);
+extern chtype mvwinch(WINDOW *, int, int);
+
+extern int addch(chtype);
+extern int addchnstr(chtype *, int);
+extern int addchstr(chtype *);
+extern int addnstr(char *, int);
+extern int addstr(char *);
+extern int attroff(chtype);
+extern int attron(chtype);
+extern int attrset(chtype);
+extern int beep(void);
+extern int bkgd(chtype);
+extern int border(chtype, chtype, chtype, chtype,
+ chtype, chtype, chtype, chtype);
+extern int box(WINDOW *, chtype, chtype);
+extern int clear(void);
+extern int clearok(WINDOW *, bool);
+extern int clrtobot(void);
+extern int clrtoeol(void);
+extern int crmode(void);
+extern int delch(void);
+extern int deleteln(void);
+extern int echo(void);
+extern int echochar(chtype);
+extern int erase(void);
+extern int fixterm(void);
+extern int flash(void);
+extern int garbagedlines(WINDOW *, int, int);
+extern int garbagedwin(WINDOW *);
+extern int getch(void);
+extern int getstr(char *);
+extern int gettmode(void);
+extern int halfdelay(int);
+extern int hline(chtype, int);
+extern int inchnstr(chtype *, int);
+extern int inchstr(chtype *);
+extern int innstr(char *, int);
+extern int insch(chtype);
+extern int insdelln(int);
+extern int insertln(void);
+extern int insnstr(char *, int);
+extern int insstr(char *);
+extern int instr(char *);
+extern int intrflush(WINDOW *, int);
+extern int is_linetouched(WINDOW *, int);
+extern int is_wintouched(WINDOW *);
+extern int leaveok(WINDOW *, bool);
+extern int meta(WINDOW *, int);
+extern int move(int, int);
+extern int mvaddch(int, int, chtype);
+extern int mvaddchnstr(int, int, chtype *, int);
+extern int mvaddchstr(int, int, chtype *);
+extern int mvaddnstr(int, int, char *, int);
+extern int mvaddstr(int, int, char *);
+extern int mvdelch(int, int);
+extern int mvgetch(int, int);
+extern int mvgetstr(int, int, char *);
+extern int mvhline(int, int, chtype, int);
+extern int mvinchnstr(int, int, chtype *, int);
+extern int mvinchstr(int, int, chtype *);
+extern int mvinnstr(int, int, char *, int);
+extern int mvinsch(int, int, chtype);
+extern int mvinsnstr(int, int, char *, int);
+extern int mvinsstr(int, int, char *);
+extern int mvinstr(int, int, char *);
+extern int mvvline(int, int, chtype, int);
+extern int mvwaddch(WINDOW *, int, int, chtype);
+extern int mvwaddchnstr(WINDOW *, int, int, chtype *, int);
+extern int mvwaddchstr(WINDOW *, int, int, chtype *);
+extern int mvwaddnstr(WINDOW *, int, int, char *, int);
+extern int mvwaddstr(WINDOW *, int, int, char *);
+extern int mvwdelch(WINDOW *, int, int);
+extern int mvwgetch(WINDOW *, int, int);
+extern int mvwgetstr(WINDOW *, int, int, char *);
+extern int mvwhline(WINDOW *, int, int, chtype, int);
+extern int mvwinchnstr(WINDOW *, int, int, chtype *, int);
+extern int mvwinchstr(WINDOW *, int, int, chtype *);
+extern int mvwinnstr(WINDOW *, int, int, char *, int);
+extern int mvwinsch(WINDOW *, int, int, chtype);
+extern int mvwinsnstr(WINDOW *, int, int, char *, int);
+extern int mvwinsstr(WINDOW *, int, int, char *);
+extern int mvwinstr(WINDOW *, int, int, char *);
+extern int mvwvline(WINDOW *, int, int, chtype, int);
+extern int nl(void);
+extern int nocrmode(void);
+extern int nodelay(WINDOW *, bool);
+extern int noecho(void);
+extern int nonl(void);
+extern int notimeout(WINDOW *, bool);
+extern int overlay(WINDOW *, WINDOW *);
+extern int overwrite(WINDOW *, WINDOW *);
+extern int redrawwin(WINDOW *);
+extern int refresh(void);
+extern int resetterm(void);
+extern int saveterm(void);
+extern int scr_init(char *);
+extern int scr_restore(char *);
+extern int scr_set(char *);
+extern int scrl(int);
+extern int scroll(WINDOW *);
+extern int scrollok(WINDOW *, bool);
+extern int setscrreg(int, int);
+extern int setterm(char *);
+extern int slk_init(int);
+extern int standend(void);
+extern int standout(void);
+extern int syncok(WINDOW *, bool);
+extern int touchline(WINDOW *, int, int);
+extern int touchwin(WINDOW *);
+extern int untouchwin(WINDOW *);
+extern int vline(chtype, int);
+extern int waddchstr(WINDOW *, chtype *);
+extern int waddstr(WINDOW *, char *);
+extern int wclear(WINDOW *);
+extern int wdeleteln(WINDOW *);
+extern int werase(WINDOW *);
+extern int winchstr(WINDOW *, chtype *);
+extern int winsertln(WINDOW *);
+extern int winsstr(WINDOW *, char *);
+extern int winstr(WINDOW *, char *);
+extern int wstandend(WINDOW *);
+extern int wstandout(WINDOW *);
+
+extern void bkgdset(chtype);
+extern void idcok(WINDOW *, bool);
+extern void noqiflush(void);
+extern void wbkgdset(WINDOW *, chtype);
+extern void qiflush(void);
+extern void timeout(int);
+extern void wtimeout(WINDOW *, int);
+extern void use_env(int); /* int sb. char */
+
+extern chtype inwch(void);
+extern chtype mvinwch(int, int);
+extern chtype mvwinwch(WINDOW *, int, int);
+
+extern int addnwstr(wchar_t *, int);
+extern int addwch(chtype);
+extern int addwchnstr(chtype *, int);
+extern int addwchstr(chtype *);
+extern int addwstr(wchar_t *);
+extern int echowchar(chtype);
+extern int getnwstr(wchar_t *, int);
+extern int getwch(void);
+extern int getwstr(wchar_t *);
+extern int innwstr(wchar_t *, int);
+extern int insnwstr(wchar_t *, int);
+extern int inswch(chtype);
+extern int inswstr(wchar_t *);
+extern int inwchnstr(chtype *, int);
+extern int inwchstr(chtype *);
+extern int inwstr(wchar_t *);
+extern int mvaddnwstr(int, int, wchar_t *, int);
+extern int mvaddwch(int, int, chtype);
+extern int mvaddwchnstr(int, int, chtype *, int);
+extern int mvaddwchstr(int, int, chtype *);
+extern int mvaddwstr(int, int, wchar_t *);
+extern int mvgetnwstr(int, int, wchar_t *, int);
+extern int mvgetwch(int, int);
+extern int mvgetwstr(int, int, wchar_t *);
+extern int mvinnwstr(int, int, wchar_t *, int);
+extern int mvinsnwstr(int, int, wchar_t *, int);
+extern int mvinswch(int, int, chtype);
+extern int mvinswstr(int, int, wchar_t *);
+extern int mvinwchnstr(int, int, chtype *, int);
+extern int mvinwchstr(int, int, chtype *);
+extern int mvinwstr(int, int, wchar_t *);
+extern int mvwaddnwstr(WINDOW *, int, int, wchar_t *, int);
+extern int mvwaddwch(WINDOW *, int, int, chtype);
+extern int mvwaddwchnstr(WINDOW *, int, int, chtype *, int);
+extern int mvwaddwchstr(WINDOW *, int, int, chtype *);
+extern int mvwaddwstr(WINDOW *, int, int, wchar_t *);
+extern int mvwgetnwstr(WINDOW *, int, int, wchar_t *, int);
+extern int mvwgetwch(WINDOW *, int, int);
+extern int mvwgetwstr(WINDOW *, int, int, wchar_t *);
+extern int mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
+extern int mvwinsnwstr(WINDOW *, int, int, wchar_t *, int);
+extern int mvwinswch(WINDOW *, int, int, chtype);
+extern int mvwinswstr(WINDOW *, int, int, wchar_t *);
+extern int mvwinwchnstr(WINDOW *, int, int, chtype *, int);
+extern int mvwinwchstr(WINDOW *, int, int, chtype *);
+extern int mvwinwstr(WINDOW *, int, int, wchar_t *);
+extern int waddwchstr(WINDOW *, chtype *);
+extern int waddwstr(WINDOW *, wchar_t *);
+extern int winswstr(WINDOW *, wchar_t *);
+extern int winwchstr(WINDOW *, chtype *);
+
+#else /* __STDC__ */
+
+extern SCREEN *newterm(), /* termname, fout, fin */
+extern SCREEN *set_term(); /* screenptr */
+
+extern WINDOW *subpad(),
+extern WINDOW *subwin();
+
+extern chtype inch(), winch(), mvinch(), mvwinch();
+
+extern char *unctrl();
+
+extern int addch(), addchnstr(), addchstr(), addnstr(), addstr(),
+ attroff(), attron(), attrset(), beep(), bkgd(),
+ border(), box(), clear(), clearok(), clrtobot(), clrtoeol(),
+ crmode(), delch(), deleteln(), echo(), echochar(),
+ erase(),
+/* MORE */ fixterm(),
+ flash(), garbagedlines(), garbagedwin(),
+ getch(), getstr(), gettmode(), halfdelay(), hline(),
+ inchnstr(), inchstr(), innstr(), insch(),
+ insdelln(), insertln(), insnstr(), insstr(), instr(),
+ intrflush(),
+ is_linetouched(), is_wintouched(), leaveok(), meta(),
+ move(), mvaddch(), mvaddchnstr(), mvaddchstr(), mvaddnstr(),
+ mvaddstr(), mvdelch(), mvgetch(), mvgetstr(), mvhline(),
+ mvinchnstr(), mvinchstr(), mvinnstr(), mvinsch(), mvinsnstr(),
+ mvinsstr(), mvinstr(), mvvline(), mvwaddch(), mvwaddchnstr(),
+ mvwaddchstr(), mvwaddnstr(), mvwaddstr(), mvwdelch(),
+ mvwgetch(), mvwgetstr(), mvwhline(), mvwinchnstr(),
+ mvwinchstr(), mvwinnstr(), mvwinsch(), mvwinsnstr(),
+ mvwinsstr(), mvwinstr(), mvwvline(),
+ nl(), nocrmode(), nodelay(),
+ noecho(), nonl(), notimeout(),
+ overlay(), overwrite(), redrawwin(), refresh(),
+ resetterm(), saveterm(), scr_init(),
+ scr_restore(), scr_set(), scrl(),
+ scroll(), scrollok(), setscrreg(), setterm(),
+ slk_init(), standend(), standout(),
+ syncok(), touchline(), touchwin(), untouchwin(), vline(),
+ waddchstr(), waddstr(), wclear(),
+ wdeleteln(), werase(), winchstr(), winsertln(),
+ winsstr(), winstr(), wstandend(), wstandout();
+
+extern void bkgdset(), wbkgdset(), idcok(), noqiflush(),
+ qiflush(), timeout(), wtimeout(), use_env();
+
+extern unsigned long getmouse(), getbmap();
+
+extern chtype inwch(), mvinwch(), mvwinwch();
+
+extern int addnwstr(), addwch(), addwchnstr(), addwchstr(),
+ addwstr(), echowchar(), getnwstr(), getwch(),
+ getwstr(), innwstr(), insnwstr(), inswch(),
+ inswstr(), inwchnstr(), inwchstr(), inwstr(),
+ mvaddnwstr(), mvaddwch(), mvaddwchnstr(), mvaddwchstr(),
+ mvaddwstr(), mvgetnwstr(), mvgetwch(), mvgetwstr(),
+ mvinnwstr(), mvinsnwstr(), mvinswch(), mvinswstr(),
+ mvinwchnstr(), mvinwchstr(), mvinwstr(), mvwaddnwstr(),
+ mvwaddwch(), mvwaddwchnstr(), mvwaddwchstr(), mvwaddwstr(),
+ mvwgetnwstr(), mvwgetwch(), mvwgetwstr(), mvwinnwstr(),
+ mvwinsnwstr(), mvwinswch(), mvwinswstr(), mvwinwchnstr(),
+ mvwinwchstr(), mvwinwstr(), waddwchstr(), waddwstr(),
+ winswstr(), winwchstr();
+
+#endif /* __STDC__ */
+
+#else /* NOMACROS || __lint */
+
+/*
+ * The defines from here down to the #endif for NOMACROS
+ * define macros, which may be more efficient than their
+ * function versions. The functions may be accessed by defining
+ * NOMACROS in C code. This is useful for debugging purposes.
+ */
+
+#include <unctrl.h>
+
+/* pseudo functions for stdscr */
+#define addch(ch) waddch(stdscr, ch)
+#define addnstr(s, n) waddnstr(stdscr, s, n)
+#define addstr(str) waddstr(stdscr, str)
+#define attroff(at) wattroff(stdscr, at)
+#define attron(at) wattron(stdscr, at)
+#define attrset(at) wattrset(stdscr, at)
+#define bkgd(c) wbkgd(stdscr, c)
+#define border(ls, rs, ts, bs, tl, tr, bl, br) \
+ wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
+#define clear() wclear(stdscr)
+#define clrtobot() wclrtobot(stdscr)
+#define clrtoeol() wclrtoeol(stdscr)
+#define delch() wdelch(stdscr)
+#define deleteln() wdeleteln(stdscr)
+#define echochar(ch) wechochar(stdscr, ch)
+#define erase() werase(stdscr)
+#define getch() wgetch(stdscr)
+#define getstr(str) wgetstr(stdscr, str)
+#define inch() winch(stdscr)
+#define insch(c) winsch(stdscr, c)
+#define insdelln(id) winsdelln(stdscr, id)
+#define insertln() winsertln(stdscr)
+#define insnstr(s, n) winsnstr(stdscr, s, n)
+#define insstr(s) winsstr(stdscr, s)
+#define move(y, x) wmove(stdscr, y, x)
+#define refresh() wrefresh(stdscr)
+#define scrl(n) wscrl(stdscr, n)
+#define setscrreg(t, b) wsetscrreg(stdscr, t, b)
+#define standend() wstandend(stdscr)
+#define standout() wstandout(stdscr)
+#define timeout(tm) wtimeout(stdscr, tm)
+#define hline(c, num) whline(stdscr, c, num)
+#define vline(c, num) wvline(stdscr, c, num)
+#define addchstr(str) waddchstr(stdscr, str)
+#define addchnstr(str, n) waddchnstr(stdscr, str, n)
+#define instr(str) winstr(stdscr, (str))
+#define innstr(str, n) winnstr(stdscr, (str), (n))
+#define inchstr(str) winchstr(stdscr, str)
+#define inchnstr(str, n) winchnstr(stdscr, str, n)
+#define bkgdset(c) wbkgdset(stdscr, c)
+
+#define addnwstr(ws, n) waddnwstr(stdscr, ws, n)
+#define addwch(ch) waddwch(stdscr, ch)
+#define addwchnstr(str, n) waddwchnstr(stdscr, str, n)
+#define addwchstr(str) waddwchstr(stdscr, str)
+#define addwstr(ws) waddwstr(stdscr, ws)
+#define echowchar(ch) wechowchar(stdscr, ch)
+#define getnwstr(ws, n) wgetnwstr(stdscr, ws, n)
+#define getwch() wgetwch(stdscr)
+#define getwstr(ws) wgetwstr(stdscr, ws)
+#define innwstr(ws, n) winnwstr(stdscr, ws, n)
+#define insnwstr(ws, n) winsnwstr(stdscr, ws, n)
+#define inswch(c) winswch(stdscr, c)
+#define inswstr(ws) winswstr(stdscr, ws)
+#define inwch() winwch(stdscr)
+#define inwchnstr(str, n) winwchnstr(stdscr, str, n)
+#define inwchstr(str) winwchstr(stdscr, str)
+#define inwstr(ws) winwstr(stdscr, ws)
+
+#define adjcurspos() wadjcurspos(stdscr)
+#define movenextch() wmovenextch(stdscr)
+#define moveprevch() wmoveprevch(stdscr)
+
+/* functions to define environment flags of a window */
+#ifdef CURS_PERFORMANCE
+#define wbkgdset(win, c) \
+ (((win)->_attrs = (((win)->_attrs & ~((win)->_bkgd & A_ATTRIBUTES)) | \
+ (c & A_ATTRIBUTES))), ((win)->_bkgd = (c)))
+#define syncok(win, bf) ((win)->_parent ? (win)->_sync = (bf) : ERR)
+#define notimeout(win, bf) \
+ (((win)->_notimeout = ((bf) ? TRUE : FALSE)), OK)
+#define clearok(win, bf) (((win)->_clear = (bf)), OK)
+#define leaveok(win, bf) (((win)->_leave = (bf)), OK)
+#define scrollok(win, bf) (((win)->_scroll = ((bf) ? TRUE : FALSE)), OK)
+#define idcok(win, bf) ((win)->_use_idc = ((bf) ? TRUE : FALSE))
+#define nodelay(win, bf) (((win)->_delay = (bf) ? 0 : -1), OK)
+#define is_wintouched(win) ((win)->_flags & _WINCHANGED)
+#define is_linetouched(win, line) \
+ ((((line) >= (win)->_maxy) || ((line) < 0)) ? ERR : \
+ (((win)->_firstch[(line)] == _INFINITY) ? FALSE : TRUE))
+
+#define subwin(win, nl, nc, by, bx) \
+ derwin((win), (nl), (nc), (by-win->_begy), (bx-win->_begx))
+#define touchwin(win) wtouchln((win), 0, (win)->_maxy, TRUE)
+#define redrawwin(win) wredrawln((win), 0, (win)->_maxy)
+#define winchstr(win, str) \
+ winchnstr((win), str, ((win)->_maxx - (win)->_curx))
+#define winstr(win, str) \
+ winnstr((win), str, ((win)->_maxx - (win)->_curx))
+#define untouchwin(win) wtouchln((win), 0, ((win)->_maxy), FALSE)
+#define winch(win) ((win)->_y[(win)->_cury][(win)->_curx])
+
+#define wtimeout(win, tm) ((win)->_delay = (tm))
+#define use_env(bf) (_use_env = (bf))
+
+#else /* CURS_PERFORMANCE */
+
+#ifdef __STDC__
+
+extern void wbkgdset(WINDOW *, chtype);
+extern void idcok(WINDOW *, bool);
+extern void wtimeout(WINDOW *, int);
+extern void use_env(int); /* int sb. char */
+
+extern int syncok(WINDOW *, bool);
+extern int notimeout(WINDOW *, bool);
+extern int clearok(WINDOW *, bool);
+extern int leaveok(WINDOW *, bool);
+extern int scrollok(WINDOW *, bool);
+extern int nodelay(WINDOW *, bool);
+extern int is_linetouched(WINDOW *, int);
+extern int is_wintouched(WINDOW *);
+extern int touchwin(WINDOW *);
+extern int redrawwin(WINDOW *);
+extern int winchstr(WINDOW *, chtype *);
+extern int winstr(WINDOW *, char *);
+extern int untouchwin(WINDOW *);
+
+extern chtype winch(WINDOW *);
+
+extern WINDOW *subwin(WINDOW *, int, int, int, int);
+
+#else /* __STDC__ */
+
+extern void wbkgdset(), idcok(), wtimeout(), use_env();
+
+extern int syncok(), notimeout(), clearok(), leaveok(),
+ scrollok(), nodelay(), is_linetouched(), is_wintouched(),
+ touchwin(), redrawwin(), winchstr(), winstr(),
+ untouchwin();
+
+extern chtype winch();
+
+extern WINDOW *subwin();
+
+#endif /* __STDC__ */
+
+#endif /* CURS_PERFORMANCE */
+
+/* functions for move and update */
+#define mvaddch(y, x, ch) \
+ mvwaddch(stdscr, y, x, ch)
+#define mvaddnstr(y, x, s, n) \
+ mvwaddnstr(stdscr, y, x, s, n)
+#define mvaddstr(y, x, str) \
+ mvwaddstr(stdscr, y, x, str)
+#define mvdelch(y, x) \
+ mvwdelch(stdscr, y, x)
+#define mvgetch(y, x) \
+ mvwgetch(stdscr, y, x)
+#define mvgetstr(y, x, str) \
+ mvwgetstr(stdscr, y, x, str)
+#define mvinch(y, x) \
+ mvwinch(stdscr, y, x)
+#define mvinsch(y, x, c) \
+ mvwinsch(stdscr, y, x, c)
+#define mvinsnstr(y, x, s, n) \
+ mvwinsnstr(stdscr, y, x, s, n)
+#define mvinsstr(y, x, s) \
+ mvwinsstr(stdscr, y, x, s)
+#define mvaddchstr(y, x, str) \
+ mvwaddchstr(stdscr, y, x, str)
+#define mvaddchnstr(y, x, str, n) \
+ mvwaddchnstr(stdscr, y, x, str, n)
+#define mvinstr(y, x, str) \
+ mvwinstr(stdscr, y, x, (str))
+#define mvinnstr(y, x, str, n) \
+ mvwinnstr(stdscr, y, x, (str), (n))
+#define mvinchstr(y, x, str) \
+ mvwinchstr(stdscr, y, x, str)
+#define mvinchnstr(y, x, str, n) \
+ mvwinchnstr(stdscr, y, x, str, n)
+#define mvhline(y, x, c, num) \
+ mvwhline(stdscr, y, x, c, num)
+#define mvvline(y, x, c, num) \
+ mvwvline(stdscr, y, x, c, num)
+
+#define mvaddnwstr(y, x, ws, n) \
+ mvwaddnwstr(stdscr, y, x, ws, n)
+#define mvaddwch(y, x, ch) \
+ mvwaddwch(stdscr, y, x, ch)
+#define mvaddwchnstr(y, x, str, n) \
+ mvwaddwchnstr(stdscr, y, x, str, n)
+#define mvaddwchstr(y, x, str) \
+ mvwaddwchstr(stdscr, y, x, str)
+#define mvaddwstr(y, x, ws) \
+ mvwaddwstr(stdscr, y, x, ws)
+#define mvgetnwstr(y, x, ws, n) \
+ mvwgetnwstr(stdscr, y, x, ws, n)
+#define mvgetwch(y, x) \
+ mvwgetwch(stdscr, y, x)
+#define mvgetwstr(y, x, ws) \
+ mvwgetwstr(stdscr, y, x, ws)
+#define mvinnwstr(y, x, ws, n) \
+ mvwinnwstr(stdscr, y, x, ws, n)
+#define mvinsnwstr(y, x, ws, n) \
+ mvwinsnwstr(stdscr, y, x, ws, n)
+#define mvinswch(y, x, c) \
+ mvwinswch(stdscr, y, x, c)
+#define mvinswstr(y, x, ws) \
+ mvwinswstr(stdscr, y, x, ws)
+#define mvinwch(y, x) \
+ mvwinwch(stdscr, y, x)
+#define mvinwchnstr(y, x, str, n) \
+ mvwinwchnstr(stdscr, y, x, str, n)
+#define mvinwchstr(y, x, str) \
+ mvwinwchstr(stdscr, y, x, str)
+#define mvinwstr(y, x, ws) \
+ mvwinwstr(stdscr, y, x, ws)
+
+#define mvwaddch(win, y, x, ch) \
+ (wmove(win, y, x) == ERR ? ERR : waddch(win, ch))
+#define mvwaddnstr(win, y, x, s, n) \
+ (wmove(win, y, x) == ERR ? ERR : waddnstr(win, s, n))
+#define mvwaddstr(win, y, x, str) \
+ (wmove(win, y, x) == ERR ? ERR : waddstr(win, str))
+#define mvwdelch(win, y, x) \
+ (wmove(win, y, x) == ERR ? ERR : wdelch(win))
+#define mvwgetch(win, y, x) \
+ (wmove(win, y, x) == ERR ? ERR : wgetch(win))
+#define mvwgetstr(win, y, x, str) \
+ (wmove(win, y, x) == ERR ? ERR : wgetstr(win, str))
+#define mvwinch(win, y, x) \
+ (wmove(win, y, x) == ERR ? (chtype)ERR : winch(win))
+#define mvwinsch(win, y, x, c) \
+ (wmove(win, y, x) == ERR ? ERR : winsch(win, c))
+#define mvwinsnstr(win, y, x, s, n) \
+ (wmove(win, y, x) == ERR ? ERR : winsnstr(win, s, n))
+#define mvwinsstr(win, y, x, s) \
+ (wmove(win, y, x) == ERR ? ERR : winsstr(win, s))
+#define mvwhline(win, y, x, c, num) \
+ (wmove(win, y, x) == ERR ? ERR : whline(win, c, num))
+#define mvwvline(win, y, x, c, num) \
+ (wmove(win, y, x) == ERR ? ERR : wvline(win, c, num))
+#define mvwaddchstr(win, y, x, str) \
+ (wmove(win, y, x) == ERR ? ERR : waddchstr(win, str))
+#define mvwaddchnstr(win, y, x, str, n) \
+ (wmove(win, y, x) == ERR ? ERR : waddchnstr(win, str, n))
+#define mvwinstr(win, y, x, str) \
+ (wmove(win, y, x) == ERR ? ERR : winstr(win, str))
+#define mvwinnstr(win, y, x, str, n) \
+ (wmove(win, y, x) == ERR ? ERR : winnstr(win, str, n))
+#define mvwinchstr(win, y, x, str) \
+ (wmove(win, y, x) == ERR ? ERR : winchstr(win, str))
+#define mvwinchnstr(win, y, x, str, n) \
+ (wmove(win, y, x) == ERR ? ERR : winchnstr(win, str, n))
+#define mvwaddnwstr(win, y, x, ws, n) \
+ (wmove(win, y, x) == ERR ? ERR : waddnwstr(win, ws, n))
+#define mvwaddwch(win, y, x, ch) \
+ (wmove(win, y, x) == ERR ? ERR : waddwch(win, ch))
+#define mvwaddwchnstr(win, y, x, str, n) \
+ (wmove(win, y, x) == ERR ? ERR : waddwchnstr(win, str, n))
+#define mvwaddwchstr(win, y, x, str) \
+ (wmove(win, y, x) == ERR ? ERR : waddwchstr(win, str))
+#define mvwaddwstr(win, y, x, ws) \
+ (wmove(win, y, x) == ERR ? ERR : waddwstr(win, ws))
+#define mvwgetnwstr(win, y, x, ws, n) \
+ (wmove(win, y, x) == ERR ? ERR : wgetnwstr(win, ws, n))
+#define mvwgetwch(win, y, x) \
+ (wmove(win, y, x) == ERR ? ERR : wgetwch(win))
+#define mvwgetwstr(win, y, x, ws) \
+ (wmove(win, y, x) == ERR ? ERR : wgetwstr(win, ws))
+#define mvwinnwstr(win, y, x, ws, n) \
+ (wmove(win, y, x) == ERR ? ERR : winnwstr(win, ws, n))
+#define mvwinsnwstr(win, y, x, ws, n) \
+ (wmove(win, y, x) == ERR ? ERR : winsnwstr(win, ws, n))
+#define mvwinswch(win, y, x, c) \
+ (wmove(win, y, x) == ERR ? ERR : winswch(win, c))
+#define mvwinswstr(win, y, x, ws) \
+ (wmove(win, y, x) == ERR ? ERR : winswstr(win, ws))
+#define mvwinwch(win, y, x) \
+ (wmove(win, y, x) == ERR ?(chtype) ERR : winwch(win))
+#define mvwinwchnstr(win, y, x, str, n) \
+ (wmove(win, y, x) == ERR ? ERR : winwchnstr(win, str, n))
+#define mvwinwchstr(win, y, x, str) \
+ (wmove(win, y, x) == ERR ? ERR : winwchstr(win, str))
+#define mvwinwstr(win, y, x, ws) \
+ (wmove(win, y, x) == ERR ? ERR : winwstr(win, ws))
+
+#define waddwchstr(win, str) waddwchnstr(win, str, -1)
+#define winwchstr(win, str) winwchnstr(win, str, -1)
+#define waddwstr(win, ws) waddnwstr(win, ws, -1)
+#define winswstr(win, ws) winsnwstr(win, ws, -1)
+
+#ifdef CURS_MACROS
+#define overlay(src, dst) _overlap((src), (dst), TRUE)
+#define overwrite(src, dst) _overlap((src), (dst), FALSE)
+#define wdeleteln(win) winsdelln((win), -1)
+#define winsertln(win) winsdelln((win), 1)
+#define wstandend(win) wattrset((win), A_NORMAL)
+#define wstandout(win) wattron((win), A_STANDOUT)
+#define beep() _ring(TRUE)
+#define flash() _ring(FALSE)
+#define scroll(win) wscrl((win), 1)
+#define slk_init(f) slk_start(((f == 0) ? 3 : 2), NULL)
+#define scr_init(file) _scr_all(file, 0)
+#define scr_restore(file) _scr_all(file, 1)
+#define scr_set(file) _scr_all(file, 2)
+#define subpad(win, nl, nc, by, bx) derwin((win), (nl), (nc), (by), (bx))
+#define box(win, v, h) wborder((win), (v), (v), (h), (h), 0, 0, 0, 0)
+#define newterm(type, fout, fin) newscreen((type), 0, 0, 0, (fout), (fin))
+#define touchline(win, y, n) wtouchln((win), (y), (n), TRUE)
+
+#define waddstr(win, str) waddnstr((win), (str), -1)
+#define werase(win) (wmove((win), 0, 0), wclrtobot(win))
+#define wclear(win) (clearok((win), TRUE), werase(win))
+#define intrflush(win, flag) _setqiflush(flag)
+#define meta(win, flag) _meta(flag)
+
+#define setterm(name) setupterm((name), 1, (char *)NULL)
+#define gettmode() (OK)
+#define halfdelay(tens) ttimeout((tens)*100)
+
+#define echo() _setecho(TRUE)
+#define noecho() _setecho(FALSE)
+#define nl() _setnonl(FALSE)
+#define nonl() _setnonl(TRUE)
+
+#else /* CURS_MACROS */
+
+#ifdef __STDC__
+
+extern int overlay(WINDOW *, WINDOW *);
+extern int overwrite(WINDOW *, WINDOW *);
+extern int wdeleteln(WINDOW *);
+extern int winsertln(WINDOW *);
+extern int wstandend(WINDOW *);
+extern int wstandout(WINDOW *);
+extern int beep(void);
+extern int flash(void);
+extern int scroll(WINDOW *);
+extern int slk_init(int);
+extern int scr_init(char *);
+extern int scr_restore(char *);
+extern int box(WINDOW *, chtype, chtype);
+extern int touchline(WINDOW *, int, int);
+extern int waddstr(WINDOW *, char *);
+extern int werase(WINDOW *);
+extern int wclear(WINDOW *);
+extern int intrflush(WINDOW *, int);
+extern int meta(WINDOW *, int);
+extern int setterm(char *);
+extern int gettmode(void);
+extern int halfdelay(int);
+extern int echo(void);
+extern int noecho(void);
+extern int nl(void);
+extern int nonl(void);
+
+extern WINDOW *subpad(WINDOW *, int, int, int, int);
+
+extern SCREEN *newterm(char *, FILE *, FILE *);
+
+#else /* __STDC__ */
+
+extern int overlay(), overwrite(), wdeleteln(), winsertln(),
+ wstandend(), wstandout(), beep(), flash(),
+ scroll(), slk_init(), scr_init(), scr_restore(),
+ box(), touchline(), waddstr(), werase(),
+ wclear(), intrflush(), meta(), setterm(), gettmode(),
+ halfdelay(), echo(), noecho(), nl(), nonl();
+
+extern WINDOW *subpad();
+
+extern SCREEN *newterm();
+
+#endif /* __STDC__ */
+#endif /* CURS_MACROS */
+
+#define garbagedlines wredrawln
+#define garbagedwin redrawwin
+
+#define crmode cbreak
+#define nocrmode nocbreak
+#define saveterm def_prog_mode
+#define fixterm reset_prog_mode
+#define resetterm reset_shell_mode
+
+#define waddchstr(win, str) waddchnstr((win), (str), -1)
+#define winsstr(win, str) winsnstr((win), (str), -1)
+
+/* iocontrol functions */
+#define qiflush() _setqiflush(TRUE)
+#define noqiflush() _setqiflush(FALSE)
+
+#define set_term setcurscreen
+
+#endif /* NOMACROS || __lint */
+
+/*
+ * Standard alternate character set. The current ACS world is evolving,
+ * so we support only a widely available subset: the line drawing characters
+ * from the VT100, plus a few from the Teletype 5410v1. Eventually there
+ * may be support of more sophisticated ACS line drawing, such as that
+ * in the Teletype 5410, the HP line drawing set, and the like. There may
+ * be support for some non line oriented characters as well.
+ *
+ * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
+ * is the right, b is the bottom, and l is the left. t, r, b, and l might
+ * be B (blank), S (single), D (double), or T (thick). The subset defined
+ * here only uses B and S.
+ */
+
+#define ACS_BSSB (acs_map['l'])
+#define ACS_SSBB (acs_map['m'])
+#define ACS_BBSS (acs_map['k'])
+#define ACS_SBBS (acs_map['j'])
+#define ACS_SBSS (acs_map['u'])
+#define ACS_SSSB (acs_map['t'])
+#define ACS_SSBS (acs_map['v'])
+#define ACS_BSSS (acs_map['w'])
+#define ACS_BSBS (acs_map['q'])
+#define ACS_SBSB (acs_map['x'])
+#define ACS_SSSS (acs_map['n'])
+
+/*
+ * Human readable names for the most commonly used characters.
+ * "Upper", "right", etc. are chosen to be consistent with the vt100 manual.
+ */
+
+#define ACS_ULCORNER ACS_BSSB
+#define ACS_LLCORNER ACS_SSBB
+#define ACS_URCORNER ACS_BBSS
+#define ACS_LRCORNER ACS_SBBS
+#define ACS_RTEE ACS_SBSS
+#define ACS_LTEE ACS_SSSB
+#define ACS_BTEE ACS_SSBS
+#define ACS_TTEE ACS_BSSS
+#define ACS_HLINE ACS_BSBS
+#define ACS_VLINE ACS_SBSB
+#define ACS_PLUS ACS_SSSS
+#define ACS_S1 (acs_map['o']) /* scan line 1 */
+#define ACS_S9 (acs_map['s']) /* scan line 9 */
+#define ACS_DIAMOND (acs_map['`']) /* diamond */
+#define ACS_CKBOARD (acs_map['a']) /* checker board (stipple) */
+#define ACS_DEGREE (acs_map['f']) /* degree symbol */
+#define ACS_PLMINUS (acs_map['g']) /* plus/minus */
+#define ACS_BULLET (acs_map['~']) /* bullet */
+ /* Teletype 5410v1 symbols */
+#define ACS_LARROW (acs_map[',']) /* arrow pointing left */
+#define ACS_RARROW (acs_map['+']) /* arrow pointing right */
+#define ACS_DARROW (acs_map['.']) /* arrow pointing down */
+#define ACS_UARROW (acs_map['-']) /* arrow pointing up */
+#define ACS_BOARD (acs_map['h']) /* board of squares */
+#define ACS_LANTERN (acs_map['i']) /* lantern symbol */
+#define ACS_BLOCK (acs_map['0']) /* solid square block */
+
+.
+$a
+
+/*
+ * The definition for 'reg' is not standard, and is provided for
+ * compatibility reasons. User's are discouraged from using this.
+ */
+#define reg register
+
+/* Various video attributes */
+#define A_STANDOUT 000010000000
+#define _STANDOUT A_STANDOUT /* for compatability with old curses */
+#define A_UNDERLINE 000020000000
+#define A_REVERSE 000040000000
+#define A_BLINK 000100000000
+#define A_DIM 000200000000
+#define A_BOLD 000400000000
+#define A_ALTCHARSET 001000000000
+
+/* The next two are subject to change so don't depend on them */
+#define A_INVIS 010000000000
+#define A_PROTECT 020000000000U
+
+#define A_NORMAL 000000000000
+#define A_ATTRIBUTES 031777700000U /* 0xCFFF8000 */
+#define A_CHARTEXT 006000077777 /* 0x30007FFF */
+#define A_COLOR 000007700000
+
+#define A_WATTRIBUTES 031770000000U /* 0xCFE00000 */
+#define A_WCHARTEXT 006007777777 /* 0x301FFFFF */
+
+#define COLOR_PAIR(n) ((n) << 15)
+#define PAIR_NUMBER(n) (((n) & A_COLOR) >> 15)
+
+/* definition of 8 basic color */
+#define COLOR_BLACK 0
+#define COLOR_RED 1
+#define COLOR_GREEN 2
+#define COLOR_YELLOW 3
+#define COLOR_BLUE 4
+#define COLOR_MAGENTA 5
+#define COLOR_CYAN 6
+#define COLOR_WHITE 7
+
+/* mouse related macros: don't change these definitions or bit-masks. */
+/* they are interdependent (used by _map_button() in tgetch() */
+#define BUTTON_RELEASED 0
+#define BUTTON_PRESSED 1
+#define BUTTON_CLICKED 2
+#define BUTTON_DOUBLE_CLICKED 3
+#define BUTTON_TRIPLE_CLICKED 4
+
+#define MOUSE_X_POS (Mouse_status.x)
+#define MOUSE_Y_POS (Mouse_status.y)
+#define A_BUTTON_CHANGED (Mouse_status.changes & 7)
+#define MOUSE_MOVED (Mouse_status.changes & 8)
+#define MOUSE_POS_REPORT (Mouse_status.changes & 16)
+#define BUTTON_CHANGED(x) (Mouse_status.changes & (1 << ((x) - 1)))
+#define BUTTON_STATUS(x) (Mouse_status.button[(x)-1])
+
+/* definition of mouse bit-masks */
+#define BUTTON1_RELEASED 000000000001
+#define BUTTON1_PRESSED 000000000002
+#define BUTTON1_CLICKED 000000000004
+#define BUTTON1_DOUBLE_CLICKED 000000000010
+#define BUTTON1_TRIPLE_CLICKED 000000000020
+#define BUTTON2_RELEASED 000000000040
+#define BUTTON2_PRESSED 000000000100
+#define BUTTON2_CLICKED 000000000200
+#define BUTTON2_DOUBLE_CLICKED 000000000400
+#define BUTTON2_TRIPLE_CLICKED 000000001000
+#define BUTTON3_RELEASED 000000002000
+#define BUTTON3_PRESSED 000000004000
+#define BUTTON3_CLICKED 000000010000
+#define BUTTON3_DOUBLE_CLICKED 000000020000
+#define BUTTON3_TRIPLE_CLICKED 000000040000
+#define ALL_MOUSE_EVENTS 000000077777
+#define REPORT_MOUSE_POSITION 000000100000
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CURSES_H */
+.
+0r copyright.h
+/copyright\.h/d
+.
+1,$s/\@(\#)curses\.ed/\@(\#)curses\.h/
+w curses.h