+#include "config.h"
+
+static void die(const char *errstr, ...);
+static void draw(int);
+static void execsh(void);
+static void sigchld(int);
+static void run(void);
+
+static void csidump(void);
+static void csihandle(void);
+static void csiparse(void);
+static void csireset(void);
+
+static void tclearregion(int, int, int, int);
+static void tcursor(int);
+static void tdeletechar(int);
+static void tdeleteline(int);
+static void tinsertblank(int);
+static void tinsertblankline(int);
+static void tmoveto(int, int);
+static void tnew(int, int);
+static void tnewline(void);
+static void tputtab(void);
+static void tputc(char);
+static void tputs(char*, int);
+static void treset(void);
+static void tresize(int, int);
+static void tscrollup(int, int);
+static void tscrolldown(int, int);
+static void tsetattr(int*, int);
+static void tsetchar(char);
+static void tsetscroll(int, int);
+static void tswapscreen(void);
+
+static void ttynew(void);
+static void ttyread(void);
+static void ttyresize(int, int);
+static void ttywrite(const char *, size_t);
+
+static void xdraws(char *, Glyph, int, int, int);
+static void xhints(void);
+static void xclear(int, int, int, int);
+static void xdrawcursor(void);
+static void xinit(void);
+static void xloadcols(void);
+static void xseturgency(int);
+
+static void expose(XEvent *);
+static char* kmap(KeySym);
+static void kpress(XEvent *);
+static void resize(XEvent *);
+static void focus(XEvent *);
+static void brelease(XEvent *);
+static void bpress(XEvent *);
+static void bmotion(XEvent *);
+
+
+static void (*handler[LASTEvent])(XEvent *) = {
+ [KeyPress] = kpress,
+ [Expose] = expose,
+ [ConfigureNotify] = resize,
+ [FocusIn] = focus,
+ [FocusOut] = focus,
+ [MotionNotify] = bmotion,
+ [ButtonPress] = bpress,
+ [ButtonRelease] = brelease,
+};