#ifndef KSHELL
# include <setjmp.h>
# include <signal.h>
# include <ctype.h>
#endif
#define LOOKAHEAD 80
#ifdef VENIX
# define READAHEAD 1
#else
# define READAHEAD LOOKAHEAD
#endif
#ifdef MULTIBYTE
# ifndef ESS_MAXCHAR
# include "national.h"
# endif
# if ESS_MAXCHAR<=2
typedef unsigned short genchar;
# else
typedef long genchar;
# endif
# define CHARSIZE 2
#else
typedef char genchar;
# define CHARSIZE 1
#endif
#define TABSIZE 8
#define PRSIZE 80
#define SEARCHSIZE 80
struct edit
{
int e_kill;
int e_erase;
int e_eof;
int e_fchar;
char e_plen;
char e_crlf;
jmp_buf e_env;
int e_llimit;
int e_hline;
int e_hloff;
int e_hismin;
int e_hismax;
int e_raw;
int e_cur;
int e_eol;
int e_pcur;
int e_peol;
int e_mode;
int e_index;
int e_repeat;
int e_saved;
int e_fcol;
int e_ucol;
int e_addnl;
int e_wsize;
char *e_outbase;
char *e_outptr;
char *e_outlast;
genchar *e_inbuf;
char *e_prompt;
genchar *e_ubuf;
genchar *e_killbuf;
char e_search[SEARCHSIZE];
genchar *e_Ubuf;
genchar *e_physbuf;
int e_lbuf[LOOKAHEAD];
int e_fd;
int e_ttyspeed;
int *e_globals;
genchar *e_window;
char e_inmacro;
#ifndef KSHELL
char e_prbuff[PRSIZE];
#endif
};
#define FEMAX 50
#undef MAXWINDOW
#define MAXWINDOW 160
#define MINWINDOW 15
#define DFLTWINDOW 80
#define MAXPAT 100
#define YES 1
#define NO 0
#define FAST 2
#define SLOW 1
#define RAWMODE 1
#define ALTMODE 2
#define DELETE '\177'
#define BELL '\7'
#define ESC 033
#define UEOF -2
#define UERASE -3
#define UINTR -4
#define UKILL -5
#define UQUIT -6
#if ( 'a' == 97)
# define cntl(x) (x&037)
#else
# define cntl(c) (c=='D'?55:(c=='E'?45:(c=='F'?46:(c=='G'?'\a':(c=='H'?'\b': \
(c=='I'?'\t':(c=='J'?'\n':(c=='T'?60:(c=='U'?61:(c=='V'?50: \
(c=='W'?38:(c=='Z'?63:(c=='['?39:(c==']'?29: \
(c<'J'?c+1-'A':(c+10-'J'))))))))))))))))
#endif
#ifndef KSHELL
# define STRIP 0377
# define TO_PRINT 0100
# define GMACS 1
# define EMACS 2
# define VIRAW 4
# define EDITVI 8
# define NOHIST 16
# define EDITMASK 15
# define is_option(m) (opt_flag&(m))
extern char opt_flag;
# ifdef SYSCALL
# define read(fd,buff,n) syscall(3,fd,buff,n)
# else
# define read(fd,buff,n) rEAd(fd,buff,n)
# endif
#endif
extern struct edit editb;
#ifdef PROTO
extern void ed_crlf(void);
extern void ed_putchar(int);
extern void ed_ringbell(void);
extern void ed_setup(int);
extern void ed_failed(char*,char*);
extern void ed_flush(void);
extern int ed_getchar(void);
extern int ed_virt_to_phys(genchar*,genchar*,int,int,int);
extern int ed_window(void);
extern void ed_ungetchar(int);
extern ssize_t rEAd(int, void*, size_t);
extern int vi_read(int, char*, unsigned);
extern int emacs_read(int, char*, unsigned);
# ifdef KSHELL
extern int ed_macro(int);
extern int ed_expand(char[],int*,int*,int);
# endif
#else
extern void ed_crlf();
extern void ed_putchar();
extern void ed_ringbell();
extern void ed_setup();
extern void ed_failed();
extern void ed_flush();
extern int ed_getchar();
extern int ed_virt_to_phys();
extern int ed_window();
extern void ed_ungetchar();
# ifdef KSHELL
extern int ed_macro();
extern int ed_expand();
# endif
#endif
extern const char e_runvi[];
#ifndef KSHELL
extern const char e_version[];
#endif