#define BEL 0x07
#undef CTRL
#define CTRL(x) ((x) == '?' ? 0x7F : (x) & 0x1F)
#define UNCTRL(x) ((x) == 0x7F ? '?' : (x) | 0x40)
typedef struct {
int erase;
int kill;
int werase;
int intr;
int quit;
int eof;
} X_chars;
extern X_chars edchars;
#define XCF_COMMAND BIT(0)
#define XCF_FILE BIT(1)
#define XCF_FULLPATH BIT(2)
#define XCF_COMMAND_FILE (XCF_COMMAND|XCF_FILE)
int x_getc(void);
void x_flush(void);
int x_putc(int);
void x_puts(const char *);
bool x_mode(bool);
int promptlen(const char *, const char **);
int x_do_comment(char *, int, int *);
void x_print_expansions(int, char *const *, int);
int x_cf_glob(int, const char *, int, int, int *, int *, char ***, int *);
int x_longest_prefix(int , char *const *);
int x_basename(const char *, const char *);
void x_free_words(int, char **);
int x_escape(const char *, size_t, int (*)(const char *, size_t));
int x_emacs(char *, size_t);
void x_init_emacs(void);
void x_emacs_keys(X_chars *);
int x_vi(char *, size_t);