st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 4eddf19fdc2f3845c927291b99d3faefe73f98f3
parent 7efa4514d104d51793c4dd01ddedd4976080be07
Author: Christoph Lohmann <20h@r-36.net>
Date:   Sat,  6 Oct 2012 09:58:45 +0200

The style inquisition was here. Yes, making it a unified style. The last

infidels will be squashed too!
Diffstat:
Mst.c | 365++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 230 insertions(+), 135 deletions(-)
diff --git a/st.c b/st.c
@@ -180,9 +180,9 @@ typedef struct {
 typedef struct {
     int row;    /* nb row */
     int col;    /* nb col */
-    Line* line;    /* screen */
-    Line* alt;    /* alternate screen */
-    bool* dirty;    /* dirtyness of lines */
+    Line *line;    /* screen */
+    Line *alt;    /* alternate screen */
+    bool *dirty;    /* dirtyness of lines */
     TCursor c;    /* cursor */
     int top;    /* top    scroll limit */
     int bot;    /* bottom scroll limit */
@@ -242,7 +242,7 @@ typedef struct {
     int descent;
     short lbearing;
     short rbearing;
-    XftFont* xft_set;
+    XftFont *xft_set;
 } Font;
 
 /* Drawing Context */
@@ -252,7 +252,7 @@ typedef struct {
     Font font, bfont, ifont, ibfont;
 } DC;
 
-static void die(const char*, ...);
+static void die(const char *, ...);
 static void draw(void);
 static void redraw(void);
 static void drawregion(int, int, int, int);
@@ -279,7 +279,7 @@ static void tmoveto(int, int);
 static void tnew(int, int);
 static void tnewline(int);
 static void tputtab(bool);
-static void tputc(char*, int);
+static void tputc(char *, int);
 static void treset(void);
 static int tresize(int, int);
 static void tscrollup(int, int);
@@ -313,7 +313,7 @@ static void xresize(int, int);
 static void expose(XEvent *);
 static void visibility(XEvent *);
 static void unmap(XEvent *);
-static char* kmap(KeySym, uint);
+static char *kmap(KeySym, uint);
 static void kpress(XEvent *);
 static void cmessage(XEvent *);
 static void resize(XEvent *);
@@ -378,8 +378,10 @@ static char *opt_font = NULL;
 void *
 xmalloc(size_t len) {
     void *p = malloc(len);
+
     if(!p)
         die("Out of memory\n");
+
     return p;
 }
 
@@ -387,14 +389,17 @@ void *
 xrealloc(void *p, size_t len) {
     if((p = realloc(p, len)) == NULL)
         die("Out of memory\n");
+
     return p;
 }
 
 void *
 xcalloc(size_t nmemb, size_t size) {
     void *p = calloc(nmemb, size);
+
     if(!p)
         die("Out of memory\n");
+
     return p;
 }
 
@@ -455,8 +460,10 @@ utf8decode(char *s, long *u) {
     } else if((c & (B7|B6|B5|B4|B3)) == (B7|B6|B5|B4)) { /* 11110xxx */
         *u = c & (B2|B1|B0);
         n = 3;
-    } else
+    } else {
         goto invalid;
+    }
+
     for(i = n, ++s; i > 0; --i, ++rtn, ++s) {
         c = *s;
         if((c & (B7|B6)) != B7) /* 10xxxxxx */
@@ -464,14 +471,18 @@ utf8decode(char *s, long *u) {
         *u <<= 6;
         *u |= c & (B5|B4|B3|B2|B1|B0);
     }
+
     if((n == 1 && *u < 0x80) ||
        (n == 2 && *u < 0x800) ||
        (n == 3 && *u < 0x10000) ||
-       (*u >= 0xD800 && *u <= 0xDFFF))
+       (*u >= 0xD800 && *u <= 0xDFFF)) {
         goto invalid;
+    }
+
     return rtn;
 invalid:
     *u = 0xFFFD;
+
     return rtn;
 }
 
@@ -481,7 +492,7 @@ utf8encode(long *u, char *s) {
     ulong uc;
     int i, n;
 
-    sp = (uchar*) s;
+    sp = (uchar *)s;
     uc = *u;
     if(uc < 0x80) {
         *sp = uc; /* 0xxxxxxx */
@@ -498,14 +509,17 @@ utf8encode(long *u, char *s) {
     } else {
         goto invalid;
     }
+
     for(i=n,++sp; i>0; --i,++sp)
         *sp = ((uc >> 6*(i-1)) & (B5|B4|B3|B2|B1|B0)) | B7; /* 10xxxxxx */
+
     return n+1;
 invalid:
     /* U+FFFD */
     *s++ = '\xEF';
     *s++ = '\xBF';
     *s = '\xBD';
+
     return 3;
 }
 
@@ -515,38 +529,40 @@ int
 isfullutf8(char *s, int b) {
     uchar *c1, *c2, *c3;
 
-    c1 = (uchar *) s;
-    c2 = (uchar *) ++s;
-    c3 = (uchar *) ++s;
-    if(b < 1)
+    c1 = (uchar *)s;
+    c2 = (uchar *)++s;
+    c3 = (uchar *)++s;
+    if(b < 1) {
         return 0;
-    else if((*c1&(B7|B6|B5)) == (B7|B6) && b == 1)
+    } else if((*c1&(B7|B6|B5)) == (B7|B6) && b == 1) {
         return 0;
-    else if((*c1&(B7|B6|B5|B4)) == (B7|B6|B5) &&
+    } else if((*c1&(B7|B6|B5|B4)) == (B7|B6|B5) &&
         ((b == 1) ||
-        ((b == 2) && (*c2&(B7|B6)) == B7)))
+        ((b == 2) && (*c2&(B7|B6)) == B7))) {
         return 0;
-    else if((*c1&(B7|B6|B5|B4|B3)) == (B7|B6|B5|B4) &&
+    } else if((*c1&(B7|B6|B5|B4|B3)) == (B7|B6|B5|B4) &&
         ((b == 1) ||
         ((b == 2) && (*c2&(B7|B6)) == B7) ||
-        ((b == 3) && (*c2&(B7|B6)) == B7 && (*c3&(B7|B6)) == B7)))
+        ((b == 3) && (*c2&(B7|B6)) == B7 && (*c3&(B7|B6)) == B7))) {
         return 0;
-    else
+    } else {
         return 1;
+    }
 }
 
 int
 utf8size(char *s) {
     uchar c = *s;
 
-    if(~c&B7)
+    if(~c&B7) {
         return 1;
-    else if((c&(B7|B6|B5)) == (B7|B6))
+    } else if((c&(B7|B6|B5)) == (B7|B6)) {
         return 2;
-    else if((c&(B7|B6|B5|B4)) == (B7|B6|B5))
+    } else if((c&(B7|B6|B5|B4)) == (B7|B6|B5)) {
         return 3;
-    else
+    } else {
         return 4;
+    }
 }
 
 void
@@ -563,13 +579,18 @@ selinit(void) {
 
 static inline bool
 selected(int x, int y) {
+    int bx, ex;
+
     if(sel.ey == y && sel.by == y) {
-        int bx = MIN(sel.bx, sel.ex);
-        int ex = MAX(sel.bx, sel.ex);
+        bx = MIN(sel.bx, sel.ex);
+        ex = MAX(sel.bx, sel.ex);
         return BETWEEN(x, bx, ex);
     }
-    return ((sel.b.y < y&&y < sel.e.y) || (y==sel.e.y && x<=sel.e.x))
-        || (y==sel.b.y && x>=sel.b.x && (x<=sel.e.x || sel.b.y!=sel.e.y));
+
+    return ((sel.b.y < y&&y < sel.e.y)
+            || (y==sel.e.y && x<=sel.e.x))
+            || (y==sel.b.y && x>=sel.b.x
+                    && (x<=sel.e.x || sel.b.y!=sel.e.y));
 }
 
 void
@@ -621,9 +642,9 @@ mousereport(XEvent *e) {
 
 void
 bpress(XEvent *e) {
-    if(IS_SET(MODE_MOUSE))
+    if(IS_SET(MODE_MOUSE)) {
         mousereport(e);
-    else if(e->xbutton.button == Button1) {
+    } else if(e->xbutton.button == Button1) {
         if(sel.bx != -1) {
             sel.bx = -1;
             tsetdirt(sel.b.y, sel.e.y);
@@ -637,22 +658,20 @@ bpress(XEvent *e) {
 
 void
 selcopy(void) {
-    char *str, *ptr;
-    int x, y, bufsize, is_selected = 0;
+    char *str, *ptr, *p;
+    int x, y, bufsize, is_selected = 0, size;
+    Glyph *gp;
 
-    if(sel.bx == -1)
+    if(sel.bx == -1) {
         str = NULL;
-
-    else {
+    } else {
         bufsize = (term.col+1) * (sel.e.y-sel.b.y+1) * UTF_SIZ;
         ptr = str = xmalloc(bufsize);
 
         /* append every set & selected glyph to the selection */
         for(y = 0; y < term.row; y++) {
             for(x = 0; x < term.col; x++) {
-                int size;
-                char *p;
-                Glyph *gp = &term.line[y][x];
+                gp = &term.line[y][x];
 
                 if(!(is_selected = selected(x, y)))
                     continue;
@@ -694,8 +713,9 @@ selnotify(XEvent *e) {
 }
 
 void
-selpaste() {
-    XConvertSelection(xw.dpy, XA_PRIMARY, sel.xtarget, XA_PRIMARY, xw.win, CurrentTime);
+selpaste(void) {
+    XConvertSelection(xw.dpy, XA_PRIMARY, sel.xtarget, XA_PRIMARY,
+            xw.win, CurrentTime);
 }
 
 void selclear(XEvent *e) {
@@ -709,7 +729,7 @@ void
 selrequest(XEvent *e) {
     XSelectionRequestEvent *xsre;
     XSelectionEvent xev;
-    Atom xa_targets;
+    Atom xa_targets, string;
 
     xsre = (XSelectionRequestEvent *) e;
     xev.type = SelectionNotify;
@@ -723,7 +743,7 @@ selrequest(XEvent *e) {
     xa_targets = XInternAtom(xw.dpy, "TARGETS", 0);
     if(xsre->target == xa_targets) {
         /* respond with the supported type */
-        Atom string = sel.xtarget;
+        string = sel.xtarget;
         XChangeProperty(xsre->display, xsre->requestor, xsre->property,
                 XA_ATOM, 32, PropModeReplace,
                 (uchar *) &string, 1);
@@ -756,18 +776,20 @@ xsetsel(char *str) {
 
 void
 brelease(XEvent *e) {
+    struct timeval now;
+
     if(IS_SET(MODE_MOUSE)) {
         mousereport(e);
         return;
     }
-    if(e->xbutton.button == Button2)
+
+    if(e->xbutton.button == Button2) {
         selpaste();
-    else if(e->xbutton.button == Button1) {
+    } else if(e->xbutton.button == Button1) {
         sel.mode = 0;
         getbuttoninfo(e, NULL, &sel.ex, &sel.ey);
         term.dirty[sel.ey] = 1;
         if(sel.bx == sel.ex && sel.by == sel.ey) {
-            struct timeval now;
             sel.bx = -1;
             gettimeofday(&now, NULL);
 
@@ -781,34 +803,44 @@ brelease(XEvent *e) {
                 /* double click to select word */
                 sel.bx = sel.ex;
                 while(sel.bx > 0 && term.line[sel.ey][sel.bx-1].state & GLYPH_SET &&
-                      term.line[sel.ey][sel.bx-1].c[0] != ' ') sel.bx--;
+                      term.line[sel.ey][sel.bx-1].c[0] != ' ') {
+                    sel.bx--;
+                }
                 sel.b.x = sel.bx;
                 while(sel.ex < term.col-1 && term.line[sel.ey][sel.ex+1].state & GLYPH_SET &&
-                      term.line[sel.ey][sel.ex+1].c[0] != ' ') sel.ex++;
+                      term.line[sel.ey][sel.ex+1].c[0] != ' ') {
+                    sel.ex++;
+                }
                 sel.e.x = sel.ex;
                 sel.b.y = sel.e.y = sel.ey;
                 selcopy();
             }
-        } else
+        } else {
             selcopy();
+        }
     }
+
     memcpy(&sel.tclick2, &sel.tclick1, sizeof(struct timeval));
     gettimeofday(&sel.tclick1, NULL);
 }
 
 void
 bmotion(XEvent *e) {
+    int starty, endy, oldey, oldex;
+
     if(IS_SET(MODE_MOUSE)) {
         mousereport(e);
         return;
     }
+
     if(sel.mode) {
-        int oldey = sel.ey, oldex = sel.ex;
+        oldey = sel.ey;
+        oldex = sel.ex;
         getbuttoninfo(e, NULL, &sel.ex, &sel.ey);
 
         if(oldey != sel.ey || oldex != sel.ex) {
-            int starty = MIN(oldey, sel.ey);
-            int endy = MAX(oldey, sel.ey);
+            starty = MIN(oldey, sel.ey);
+            endy = MAX(oldey, sel.ey);
             tsetdirt(starty, endy);
         }
     }
@@ -864,9 +896,9 @@ sigchld(int a) {
 void
 ttynew(void) {
     int m, s;
+    struct winsize w = {term.row, term.col, 0, 0};
 
     /* seems to work fine on linux, openbsd and freebsd */
-    struct winsize w = {term.row, term.col, 0, 0};
     if(openpty(&m, &s, NULL, NULL, &w) < 0)
         die("openpty failed: %s\n", SERRNO);
 
@@ -905,6 +937,7 @@ ttynew(void) {
 void
 dump(char c) {
     static int col;
+
     fprintf(stderr, " %02x '%c' ", c, isprint(c)?c:'.');
     if(++col % 10 == 0)
         fprintf(stderr, "\n");
@@ -931,7 +964,7 @@ ttyread(void) {
         charsize = utf8decode(ptr, &utf8c);
         utf8encode(&utf8c, s);
         tputc(s, charsize);
-        ptr    += charsize;
+        ptr += charsize;
         buflen -= charsize;
     }
 
@@ -958,8 +991,7 @@ ttyresize(void) {
 }
 
 void
-tsetdirt(int top, int bot)
-{
+tsetdirt(int top, int bot) {
     int i;
 
     LIMIT(top, 0, term.row-1);
@@ -970,8 +1002,7 @@ tsetdirt(int top, int bot)
 }
 
 void
-tfulldirt(void)
-{
+tfulldirt(void) {
     tsetdirt(0, term.row-1);
 }
 
@@ -979,15 +1010,18 @@ void
 tcursor(int mode) {
     static TCursor c;
 
-    if(mode == CURSOR_SAVE)
+    if(mode == CURSOR_SAVE) {
         c = term.c;
-    else if(mode == CURSOR_LOAD)
-        term.c = c, tmoveto(c.x, c.y);
+    } else if(mode == CURSOR_LOAD) {
+        term.c = c;
+        tmoveto(c.x, c.y);
+    }
 }
 
 void
 treset(void) {
     uint i;
+
     term.c = (TCursor){{
         .mode = ATTR_NULL,
         .fg = DefaultFG,
@@ -1024,7 +1058,8 @@ tnew(int col, int row) {
 
 void
 tswapscreen(void) {
-    Line* tmp = term.line;
+    Line *tmp = term.line;
+
     term.line = term.alt;
     term.alt = tmp;
     term.mode ^= MODE_ALTSCREEN;
@@ -1098,10 +1133,12 @@ selscroll(int orig, int n) {
 void
 tnewline(int first_col) {
     int y = term.c.y;
-    if(y == term.bot)
+
+    if(y == term.bot) {
         tscrollup(term.top, 1);
-    else
+    } else {
         y++;
+    }
     tmoveto(first_col ? 0 : term.c.x, y);
 }
 
@@ -1119,11 +1156,12 @@ csiparse(void) {
             csiescseq.arg[csiescseq.narg] *= 10;
             csiescseq.arg[csiescseq.narg] += *p++ - '0'/*, noarg = 0 */;
         }
-        if(*p == ';' && csiescseq.narg+1 < ESC_ARG_SIZ)
+        if(*p == ';' && csiescseq.narg+1 < ESC_ARG_SIZ) {
             csiescseq.narg++, p++;
-        else {
+        } else {
             csiescseq.mode = *p;
             csiescseq.narg++;
+
             return;
         }
     }
@@ -1140,21 +1178,21 @@ tmoveto(int x, int y) {
 
 void
 tsetchar(char *c) {
+    char *vt100_0[62] = { /* 0x41 - 0x7e */
+        "↑", "↓", "→", "←", "█", "▚", "☃", /* A - G */
+        0, 0, 0, 0, 0, 0, 0, 0, /* H - O */
+        0, 0, 0, 0, 0, 0, 0, 0, /* P - W */
+        0, 0, 0, 0, 0, 0, 0, " ", /* X - _ */
+        "◆", "▒", "␉", "␌", "␍", "␊", "°", "±", /* ` - g */
+        "␤", "␋", "┘", "┐", "┌", "└", "┼", "⎺", /* h - o */
+        "⎻", "─", "⎼", "⎽", "├", "┤", "┴", "┬", /* p - w */
+        "│", "≤", "≥", "π", "≠", "£", "·", /* x - ~ */
+    };
+
     /*
      * The table is proudly stolen from rxvt.
      */
     if(term.c.attr.mode & ATTR_GFX) {
-        char *vt100_0[62] = { /* 0x41 - 0x7e */
-            "↑", "↓", "→", "←", "█", "▚", "☃", /* A - G */
-            0, 0, 0, 0, 0, 0, 0, 0, /* H - O */
-            0, 0, 0, 0, 0, 0, 0, 0, /* P - W */
-            0, 0, 0, 0, 0, 0, 0, " ", /* X - _ */
-            "◆", "▒", "␉", "␌", "␍", "␊", "°", "±", /* ` - g */
-            "␤", "␋", "┘", "┐", "┌", "└", "┼", "⎺", /* h - o */
-            "⎻", "─", "⎼", "⎽", "├", "┤", "┴", "┬", /* p - w */
-            "│", "≤", "≥", "π", "≠", "£", "·", /* x - ~ */
-        };
-
         if(c[0] >= 0x41 && c[0] <= 0x7e
                 && vt100_0[c[0] - 0x41]) {
             c = vt100_0[c[0] - 0x41];
@@ -1200,7 +1238,9 @@ tdeletechar(int n) {
         tclearregion(term.c.x, term.c.y, term.col-1, term.c.y);
         return;
     }
-    memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src], size * sizeof(Glyph));
+
+    memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src],
+            size * sizeof(Glyph));
     tclearregion(term.col-n, term.c.y, term.col-1, term.c.y);
 }
 
@@ -1216,7 +1256,9 @@ tinsertblank(int n) {
         tclearregion(term.c.x, term.c.y, term.col-1, term.c.y);
         return;
     }
-    memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src], size * sizeof(Glyph));
+
+    memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src],
+            size * sizeof(Glyph));
     tclearregion(src, term.c.y, dst - 1, term.c.y);
 }
 
@@ -1282,13 +1324,18 @@ tsetattr(int *attr, int l) {
         case 38:
             if(i + 2 < l && attr[i + 1] == 5) {
                 i += 2;
-                if(BETWEEN(attr[i], 0, 255))
+                if(BETWEEN(attr[i], 0, 255)) {
                     term.c.attr.fg = attr[i];
-                else
-                    fprintf(stderr, "erresc: bad fgcolor %d\n", attr[i]);
+                } else {
+                    fprintf(stderr,
+                        "erresc: bad fgcolor %d\n",
+                        attr[i]);
+                }
+            } else {
+                fprintf(stderr,
+                    "erresc(38): gfx attr %d unknown\n",
+                    attr[i]);
             }
-            else
-                fprintf(stderr, "erresc(38): gfx attr %d unknown\n", attr[i]);
             break;
         case 39:
             term.c.attr.fg = DefaultFG;
@@ -1296,28 +1343,36 @@ tsetattr(int *attr, int l) {
         case 48:
             if(i + 2 < l && attr[i + 1] == 5) {
                 i += 2;
-                if(BETWEEN(attr[i], 0, 255))
+                if(BETWEEN(attr[i], 0, 255)) {
                     term.c.attr.bg = attr[i];
-                else
-                    fprintf(stderr, "erresc: bad bgcolor %d\n", attr[i]);
+                } else {
+                    fprintf(stderr,
+                        "erresc: bad bgcolor %d\n",
+                        attr[i]);
+                }
+            } else {
+                fprintf(stderr,
+                    "erresc(48): gfx attr %d unknown\n",
+                    attr[i]);
             }
-            else
-                fprintf(stderr, "erresc(48): gfx attr %d unknown\n", attr[i]);
             break;
         case 49:
             term.c.attr.bg = DefaultBG;
             break;
         default:
-            if(BETWEEN(attr[i], 30, 37))
+            if(BETWEEN(attr[i], 30, 37)) {
                 term.c.attr.fg = attr[i] - 30;
-            else if(BETWEEN(attr[i], 40, 47))
+            } else if(BETWEEN(attr[i], 40, 47)) {
                 term.c.attr.bg = attr[i] - 40;
-            else if(BETWEEN(attr[i], 90, 97))
+            } else if(BETWEEN(attr[i], 90, 97)) {
                 term.c.attr.fg = attr[i] - 90 + 8;
-            else if(BETWEEN(attr[i], 100, 107))
+            } else if(BETWEEN(attr[i], 100, 107)) {
                 term.c.attr.bg = attr[i] - 100 + 8;
-            else
-                fprintf(stderr, "erresc(default): gfx attr %d unknown\n", attr[i]), csidump();
+            } else {
+                fprintf(stderr,
+                    "erresc(default): gfx attr %d unknown\n",
+                    attr[i]), csidump();
+            }
             break;
         }
     }
@@ -1573,9 +1628,9 @@ csihandle(void) {
         tsetattr(csiescseq.arg, csiescseq.narg);
         break;
     case 'r': /* DECSTBM -- Set Scrolling Region */
-        if(csiescseq.priv)
+        if(csiescseq.priv) {
             goto unknown;
-        else {
+        } else {
             DEFAULT(csiescseq.arg[0], 1);
             DEFAULT(csiescseq.arg[1], term.row);
             tsetscroll(csiescseq.arg[0]-1, csiescseq.arg[1]-1);
@@ -1594,14 +1649,22 @@ csihandle(void) {
 void
 csidump(void) {
     int i;
+    uint c;
+
     printf("ESC[");
     for(i = 0; i < csiescseq.len; i++) {
-        uint c = csiescseq.buf[i] & 0xff;
-        if(isprint(c)) putchar(c);
-        else if(c == '\n') printf("(\\n)");
-        else if(c == '\r') printf("(\\r)");
-        else if(c == 0x1b) printf("(\\e)");
-        else printf("(%02x)", c);
+        c = csiescseq.buf[i] & 0xff;
+        if(isprint(c)) {
+            putchar(c);
+        } else if(c == '\n') {
+            printf("(\\n)");
+        } else if(c == '\r') {
+            printf("(\\r)");
+        } else if(c == 0x1b) {
+            printf("(\\e)");
+        } else {
+            printf("(%02x)", c);
+        }
     }
     putchar('\n');
 }
@@ -1672,14 +1735,22 @@ strparse(void) {
 void
 strdump(void) {
     int i;
+    uint c;
+
     printf("ESC%c", strescseq.type);
     for(i = 0; i < strescseq.len; i++) {
-        uint c = strescseq.buf[i] & 0xff;
-        if(isprint(c)) putchar(c);
-        else if(c == '\n') printf("(\\n)");
-        else if(c == '\r') printf("(\\r)");
-        else if(c == 0x1b) printf("(\\e)");
-        else printf("(%02x)", c);
+        c = strescseq.buf[i] & 0xff;
+        if(isprint(c)) {
+            putchar(c);
+        } else if(c == '\n') {
+            printf("(\\n)");
+        } else if(c == '\r') {
+            printf("(\\r)");
+        } else if(c == 0x1b) {
+            printf("(\\e)");
+        } else {
+            printf("(%02x)", c);
+        }
     }
     printf("ESC\\\n");
 }
@@ -1746,7 +1817,8 @@ tputc(char *c, int len) {
     if(term.esc & ESC_START) {
         if(term.esc & ESC_CSI) {
             csiescseq.buf[csiescseq.len++] = ascii;
-            if(BETWEEN(ascii, 0x40, 0x7E) || csiescseq.len >= ESC_BUF_SIZ) {
+            if(BETWEEN(ascii, 0x40, 0x7E)
+                    || csiescseq.len >= ESC_BUF_SIZ) {
                 term.esc = 0;
                 csiparse(), csihandle();
             }
@@ -1811,10 +1883,11 @@ tputc(char *c, int len) {
                 term.esc = 0;
                 break;
             case 'D': /* IND -- Linefeed */
-                if(term.c.y == term.bot)
+                if(term.c.y == term.bot) {
                     tscrollup(term.top, 1);
-                else
+                } else {
                     tmoveto(term.c.x, term.c.y+1);
+                }
                 term.esc = 0;
                 break;
             case 'E': /* NEL -- Next line */
@@ -1826,10 +1899,11 @@ tputc(char *c, int len) {
                 term.esc = 0;
                 break;
             case 'M': /* RI -- Reverse index */
-                if(term.c.y == term.top)
+                if(term.c.y == term.top) {
                     tscrolldown(term.top, 1);
-                else
+                } else {
                     tmoveto(term.c.x, term.c.y-1);
+                }
                 term.esc = 0;
                 break;
             case 'c': /* RIS -- Reset to inital state */
@@ -1859,7 +1933,7 @@ tputc(char *c, int len) {
                 break;
             default:
                 fprintf(stderr, "erresc: unknown sequence ESC 0x%02X '%c'\n",
-                    (uchar) ascii, isprint(ascii)?ascii:'.');
+                    (uchar) ascii, isprint(ascii)? ascii:'.');
                 term.esc = 0;
             }
         }
@@ -1870,10 +1944,11 @@ tputc(char *c, int len) {
             if(IS_SET(MODE_WRAP) && term.c.state & CURSOR_WRAPNEXT)
                 tnewline(1); /* always go to first col */
             tsetchar(c);
-            if(term.c.x+1 < term.col)
+            if(term.c.x+1 < term.col) {
                 tmoveto(term.c.x+1, term.c.y);
-            else
+            } else {
                 term.c.state |= CURSOR_WRAPNEXT;
+            }
         }
     }
 }
@@ -1884,6 +1959,7 @@ tresize(int col, int row) {
     int minrow = MIN(row, term.row);
     int mincol = MIN(col, term.col);
     int slide = term.c.y - row + 1;
+    bool *bp;
 
     if(col < 1 || row < 1)
         return 0;
@@ -1930,7 +2006,7 @@ tresize(int col, int row) {
         term.alt [i] = xcalloc(col, sizeof(Glyph));
     }
     if(col > term.col) {
-        bool *bp = term.tabs + term.col;
+        bp = term.tabs + term.col;
 
         memset(bp, 0, sizeof(*term.tabs) * (col - term.col));
         while(--bp > term.tabs && !*bp)
@@ -1987,7 +2063,8 @@ xloadcols(void) {
 
     for(r = 0; r < 24; r++, i++) {
         xft_color.red = xft_color.green = xft_color.blue = 0x0808 + 0x0a0a * r;
-        if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &xft_color, &dc.xft_col[i])) {
+        if(!XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &xft_color,
+                    &dc.xft_col[i])) {
             die("Could not allocate color %d\n", i);
         }
     }
@@ -2263,8 +2340,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
 
 void
 xdrawcursor(void) {
-    static int oldx = 0;
-    static int oldy = 0;
+    static int oldx = 0, oldy = 0;
     int sl;
     Glyph g = {{' '}, ATTR_NULL, DefaultBG, DefaultCS, 0};
 
@@ -2277,9 +2353,11 @@ xdrawcursor(void) {
     /* remove the old cursor */
     if(term.line[oldy][oldx].state & GLYPH_SET) {
         sl = utf8size(term.line[oldy][oldx].c);
-        xdraws(term.line[oldy][oldx].c, term.line[oldy][oldx], oldx, oldy, 1, sl);
-    } else
+        xdraws(term.line[oldy][oldx].c, term.line[oldy][oldx], oldx,
+                oldy, 1, sl);
+    } else {
         xtermclear(oldx, oldy, oldx, oldy);
+    }
 
     /* draw the new one */
     if(!(term.c.state & CURSOR_HIDE)) {
@@ -2334,6 +2412,7 @@ drawregion(int x1, int y1, int x2, int y2) {
     for(y = y1; y < y2; y++) {
         if(!term.dirty[y])
             continue;
+
         xtermclear(0, y, term.col, y);
         term.dirty[y] = 0;
         base = term.line[y][0];
@@ -2342,8 +2421,9 @@ drawregion(int x1, int y1, int x2, int y2) {
             new = term.line[y][x];
             if(ena_sel && *(new.c) && selected(x, y))
                 new.mode ^= ATTR_REVERSE;
-            if(ib > 0 && (!(new.state & GLYPH_SET) || ATTRCMP(base, new) ||
-                          ib >= DRAW_BUF_SIZ-UTF_SIZ)) {
+            if(ib > 0 && (!(new.state & GLYPH_SET)
+                    || ATTRCMP(base, new)
+                    || ib >= DRAW_BUF_SIZ-UTF_SIZ)) {
                 xdraws(buf, base, ox, y, ic, ib);
                 ic = ib = 0;
             }
@@ -2367,6 +2447,7 @@ drawregion(int x1, int y1, int x2, int y2) {
 void
 expose(XEvent *ev) {
     XExposeEvent *e = &ev->xexpose;
+
     if(xw.state & WIN_REDRAW) {
         if(!e->count)
             xw.state &= ~WIN_REDRAW;
@@ -2376,11 +2457,13 @@ expose(XEvent *ev) {
 void
 visibility(XEvent *ev) {
     XVisibilityEvent *e = &ev->xvisibility;
-    if(e->state == VisibilityFullyObscured)
+
+    if(e->state == VisibilityFullyObscured) {
         xw.state &= ~WIN_VISIBLE;
-    else if(!(xw.state & WIN_VISIBLE))
+    } else if(!(xw.state & WIN_VISIBLE)) {
         /* need a full redraw for next Expose, not just a buf copy */
         xw.state |= WIN_VISIBLE | WIN_REDRAW;
+    }
 }
 
 void
@@ -2391,6 +2474,7 @@ unmap(XEvent *ev) {
 void
 xseturgency(int add) {
     XWMHints *h = XGetWMHints(xw.dpy, xw.win);
+
     h->flags = add ? (h->flags | XUrgencyHint) : (h->flags & ~XUrgencyHint);
     XSetWMHints(xw.dpy, xw.win, h);
     XFree(h);
@@ -2401,18 +2485,24 @@ focus(XEvent *ev) {
     if(ev->type == FocusIn) {
         xw.state |= WIN_FOCUSED;
         xseturgency(0);
-    } else
+    } else {
         xw.state &= ~WIN_FOCUSED;
+    }
 }
 
 char*
 kmap(KeySym k, uint state) {
     int i;
+    uint mask;
+
     state &= ~Mod2Mask;
     for(i = 0; i < LEN(key); i++) {
-        uint mask = key[i].mask;
-        if(key[i].k == k && ((state & mask) == mask || (mask == XK_NO_MOD && !state)))
+        mask = key[i].mask;
+
+        if(key[i].k == k && ((state & mask) == mask
+                || (mask == XK_NO_MOD && !state))) {
             return (char*)key[i].s;
+        }
     }
     return NULL;
 }
@@ -2430,22 +2520,25 @@ kpress(XEvent *ev) {
 
     if (IS_SET(MODE_KBDLOCK))
         return;
+
     meta = e->state & Mod1Mask;
     shift = e->state & ShiftMask;
     len = XmbLookupString(xw.xic, e, buf, sizeof(buf), &ksym, &status);
 
     /* 1. custom keys from config.h */
-    if((customkey = kmap(ksym, e->state)))
+    if((customkey = kmap(ksym, e->state))) {
         ttywrite(customkey, strlen(customkey));
     /* 2. hardcoded (overrides X lookup) */
-    else
+    } else {
         switch(ksym) {
         case XK_Up:
         case XK_Down:
         case XK_Left:
         case XK_Right:
             /* XXX: shift up/down doesn't work */
-            sprintf(buf, "\033%c%c", IS_SET(MODE_APPKEYPAD) ? 'O' : '[', (shift ? "dacb":"DACB")[ksym - XK_Left]);
+            sprintf(buf, "\033%c%c",
+                IS_SET(MODE_APPKEYPAD) ? 'O' : '[',
+                (shift ? "dacb":"DACB")[ksym - XK_Left]);
             ttywrite(buf, 3);
             break;
         case XK_Insert:
@@ -2453,10 +2546,11 @@ kpress(XEvent *ev) {
                 selpaste();
             break;
         case XK_Return:
-            if(IS_SET(MODE_CRLF))
+            if(IS_SET(MODE_CRLF)) {
                 ttywrite("\r\n", 2);
-            else
+            } else {
                 ttywrite("\r", 1);
+            }
             break;
             /* 3. X lookup  */
         default:
@@ -2467,6 +2561,7 @@ kpress(XEvent *ev) {
             }
             break;
         }
+    }
 }
 
 void
@@ -2618,7 +2713,7 @@ main(int argc, char *argv[]) {
         }
     }
 
- run:
+run:
     setlocale(LC_CTYPE, "");
     tnew(80, 24);
     ttynew();