#include <sys/isa_defs.h>
#include <mks.h>
#include <curses.h>
#include <termios.h>
#include <unctrl.h>
#define M_TERM_NAME "unknown"
#ifndef M_CURSES_INTERBYTE_TIME
#define M_CURSES_INTERBYTE_TIME 10
#endif
#ifndef M_CURSES_MAX_RIPOFFLINE
#define M_CURSES_MAX_RIPOFFLINE 5
#endif
#define M_CURSES_SENSIBLE_WINDOWS
#define M_TYPEAHEAD_SIZE 200
#define W_IS_PAD 0x0001
#define W_END_LINE 0x0002
#define W_FULL_LINE 0x0004
#define W_FULL_WINDOW 0x0008
#define W_SCROLL_WINDOW 0x0010
#define W_CLEAR_WINDOW 0x0020
#define W_REDRAW_WINDOW 0x0040
#define W_FLUSH 0x0080
#define W_CAN_SCROLL 0x0100
#define W_LEAVE_CURSOR 0x0200
#define W_SYNC_UP 0x0400
#define W_USE_KEYPAD 0x0800
#define W_USE_TIMEOUT 0x1000
#define W_CONFIG_MASK 0x1f80
#define S_ECHO 0x0001
#define S_ENDWIN 0x0002
#define S_INS_DEL_CHAR 0x0004
#define S_INS_DEL_LINE 0x0008
#define S_ISATTY 0x0010
#define S_USE_META 0x0020
#define S_TYPEAHEAD_OK 0x0040
typedef struct t_decode {
struct t_decode *sibling;
struct t_decode *child;
short key;
int ch;
} t_decode;
typedef struct {
int top;
int bottom;
struct {
int dy;
int (*init)(WINDOW *, int);
int created;
} line[M_CURSES_MAX_RIPOFFLINE];
} t_rip;
extern SCREEN *__m_screen;
extern int __m_slk_format;
extern int __m_slk_labels_on;
extern const short __m_keyindex[][2];
extern const char *boolnames[];
extern const char *boolcodes[];
extern const char *boolfnames[];
extern const char *numnames[];
extern const char *numcodes[];
extern const char *numfnames[];
extern const char *strnames[];
extern const char *strcodes[];
extern const char *strfnames[];
#define ATTR_STATE cur_term->_at
#define PTERMIOS(x) ((struct termios *)(cur_term->x))
#define __m_cc_width(cc) wcwidth((cc)->_wc[0])
#define TPUTS(a, b, c) tputs(a, b, c)
extern int __m_wc_cc(wint_t, cchar_t *);
extern int __m_mbs_cc(const char *, attr_t, short, cchar_t *);
extern int __m_wcs_cc(const wchar_t *, attr_t, short, cchar_t *);
extern int __m_acs_cc(chtype, cchar_t *);
extern int __m_wacs_cc(const cchar_t *, cchar_t *);
extern int __m_cc_mbs(const cchar_t *, char *, int);
extern int __m_cc_sort(cchar_t *);
extern int __m_cc_write(const cchar_t *);
extern int __m_cc_first(WINDOW *, int, int);
extern int __m_cc_next(WINDOW *, int, int);
extern int __m_cc_islast(WINDOW *, int, int);
extern int __m_cc_expand(WINDOW *, int, int, int);
extern int __m_cc_erase(WINDOW *, int, int, int, int);
extern int __m_cc_compare(const cchar_t *, const cchar_t *, int);
extern int __m_cc_replace(WINDOW *, int, int, const cchar_t *, int);
extern int __m_cc_add(WINDOW *, int, int, const cchar_t *, int,
int *, int *);
#if defined(_LP64)
extern void __m_cc_hash(WINDOW *, unsigned int *, int);
#else
extern void __m_cc_hash(WINDOW *, unsigned long *, int);
#endif
extern int __m_set_echo(int);
extern int __m_tty_get(struct termios *);
extern int __m_tty_set(struct termios *);
extern int __m_decode_init(t_decode **);
extern void __m_decode_free(t_decode **);
extern int __m_do_scroll(WINDOW *, int, int, int *, int *);
extern int __m_ptr_move(void **, unsigned, unsigned, unsigned, unsigned);
extern int __m_doupdate_init(void);
extern int __m_wins_wch(WINDOW *, int, int, const cchar_t *, int *, int *);
extern int __m_cc_ins(WINDOW *, int, int, const cchar_t *);
extern void __m_mvcur_cost(void);
extern int __m_cc_modify(WINDOW *, int, int, const cchar_t *);
extern int __m_tty_set_prog_mode(void);
extern int __m_tputs(const char *, int, int (*)(int));
extern int __m_slk_clear(int);
extern int __m_cc_add_k(WINDOW *, int, int, const cchar_t *,
int, int *, int *);
extern int __m_cc_equal(const cchar_t *, const cchar_t *);
extern void __m_touch_locs(WINDOW *, int, int, int);
extern int __m_wadd_wch(WINDOW *, const cchar_t *);
extern void __m_slk_doupdate(void);
extern int __m_outc(int);
extern int __m_tty_wc(int, wchar_t *);
extern int __m_chtype_cc(chtype, cchar_t *);
extern chtype __m_cc_chtype(const cchar_t *);
extern int __m_copywin(const WINDOW *, WINDOW *, int);
extern WINDOW *__m_newwin(WINDOW *, int, int, int, int);
extern int __m_putchar(int);
extern int __m_mvcur(int, int, int, int, int (*)(int));
extern int __m_read_terminfo(const char *, TERMINAL *);
extern int __m_setupterm(char *, int, int, int *);
extern int pollTypeahead(void);
extern int wistombs(char *, const wint_t *, int);
extern int wistowcs(wchar_t *, const wint_t *, int);
extern void wtouchln_hard(WINDOW *, int, int);
extern int __xc_feof(void *);
extern int __xc_ferror(void *);
extern void __xc_clearerr(void *);
extern int __xc_ungetc(int, void *);
extern void iqAdd(unsigned int ch);
extern void iqPush(unsigned int ch);
extern int iqIsEmpty(void);
extern void iqReset(void);
extern int iqPull(void);
#define WSYNC(w) \
if ((w)->_flags & W_SYNC_UP) {\
wsyncup(w);\
}
#define WFLUSH(w) (((w)->_flags & W_FLUSH) ? wrefresh(w) : OK)