Good evening everybody!

I've taken a look at st today and made some changes that have proven to
improve the code while working on sbase and ubase in the last few months.

These patches imply layout and style changes in most places of the code,
so before you grab your pitchforks and torches:
The patches on the wiki are broken for git HEAD anyway. The next thing on
my list is to go through _all_ patches on the wiki and make releases for
0.6, which has been tagged yesterday, and git HEAD preferrably after these
patches have been merged.

I know about the clause in the suckless style guide: The project's style
has precedence. Nevertheless, I think it's only beneficial to have a
consistent style across the multiple projects we have and most importantly
across a single project in particular.
I once read that suckless is indeed popular for some people because of our
great "brain dead C dialect", thus I think it's a step in the right direction
to make this dialect even more solid.

Now is the best time to merge style changes like this, one day after the latest
version has been tagged. This gives us (and especially me) enough time to take
care of the wiki-patches.

Please let me know what you think about it!

Cheers

FRIGN

-- 
FRIGN <[email protected]>
>From 584b615305589aa760d49e62cb7cf64d406d6653 Mon Sep 17 00:00:00 2001
From: FRIGN <[email protected]>
Date: Wed, 8 Jul 2015 17:00:16 +0200
Subject: [PATCH 1/5] Remove insane *_FILENO and EXIT_* usage

Any system having different assignments than the usual 0, 1, 2 for
the standard file numbers and 0, 1 for the exit-statuses is broken
beyond repair.
Let's keep it simple and just use the numbers, no reason to fall
out of the window here and bend down for POSIX.
---
 st.c | 27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)

diff --git a/st.c b/st.c
index b89d094..0260562 100644
--- a/st.c
+++ b/st.c
@@ -513,7 +513,7 @@ static STREscape strescseq;
 static int cmdfd;
 static pid_t pid;
 static Selection sel;
-static int iofd = STDOUT_FILENO;
+static int iofd = 1;
 static char **opt_cmd = NULL;
 static char *opt_io = NULL;
 static char *opt_title = NULL;
@@ -1207,7 +1207,7 @@ die(const char *errstr, ...) {
 	va_start(ap, errstr);
 	vfprintf(stderr, errstr, ap);
 	va_end(ap);
-	exit(EXIT_FAILURE);
+	exit(1);
 }
 
 void
@@ -1256,12 +1256,12 @@ execsh(void) {
 	signal(SIGALRM, SIG_DFL);
 
 	execvp(prog, args);
-	_exit(EXIT_FAILURE);
+	_exit(1);
 }
 
 void
 sigchld(int a) {
-	int stat, ret;
+	int stat;
 	pid_t p;
 
 	if((p = waitpid(pid, &stat, WNOHANG)) < 0)
@@ -1270,10 +1270,9 @@ sigchld(int a) {
 	if(pid != p)
 		return;
 
-	ret = WIFEXITED(stat) ? WEXITSTATUS(stat) : EXIT_FAILURE;
-	if (ret != EXIT_SUCCESS)
+	if (!WIFEXITED(stat) || WEXITSTATUS(stat))
 		die("child finished with error '%d'\n", stat);
-	exit(EXIT_SUCCESS);
+	exit(0);
 }
 
 
@@ -1308,9 +1307,7 @@ ttynew(void) {
 
 	if(opt_io) {
 		term.mode |= MODE_PRINT;
-		iofd = (!strcmp(opt_io, "-")) ?
-			  STDOUT_FILENO :
-			  open(opt_io, O_WRONLY | O_CREAT, 0666);
+		iofd = (!strcmp(opt_io, "-")) ? 1 : open(opt_io, O_WRONLY | O_CREAT, 0666);
 		if(iofd < 0) {
 			fprintf(stderr, "Error opening %s:%s\n",
 				opt_io, strerror(errno));
@@ -1320,7 +1317,7 @@ ttynew(void) {
 	if (opt_line) {
 		if((cmdfd = open(opt_line, O_RDWR)) < 0)
 			die("open line failed: %s\n", strerror(errno));
-		close(STDIN_FILENO);
+		close(0);
 		dup(cmdfd);
 		stty();
 		return;
@@ -1337,9 +1334,9 @@ ttynew(void) {
 	case 0:
 		close(iofd);
 		setsid(); /* create a new process group */
-		dup2(s, STDIN_FILENO);
-		dup2(s, STDOUT_FILENO);
-		dup2(s, STDERR_FILENO);
+		dup2(s, 0);
+		dup2(s, 1);
+		dup2(s, 2);
 		if(ioctl(s, TIOCSCTTY, NULL) < 0)
 			die("ioctl TIOCSCTTY failed: %s\n", strerror(errno));
 		close(s);
@@ -3871,7 +3868,7 @@ cmessage(XEvent *e) {
 	} else if(e->xclient.data.l[0] == xw.wmdeletewin) {
 		/* Send SIGHUP to shell */
 		kill(pid, SIGHUP);
-		exit(EXIT_SUCCESS);
+		exit(0);
 	}
 }
 
-- 
1.8.5.5

>From 2d60df69a6795509020216bff5b97734d80498cb Mon Sep 17 00:00:00 2001
From: FRIGN <[email protected]>
Date: Wed, 8 Jul 2015 17:18:46 +0200
Subject: [PATCH 2/5] Unboolify st

This practice proved itself in sbase, ubase and a couple of other
projects.
---
 config.def.h |  3 +--
 st.c         | 45 ++++++++++++++++++++++-----------------------
 2 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/config.def.h b/config.def.h
index 64e75b8..5375c1c 100644
--- a/config.def.h
+++ b/config.def.h
@@ -30,7 +30,7 @@ static unsigned int doubleclicktimeout = 300;
 static unsigned int tripleclicktimeout = 600;
 
 /* alt screens */
-static bool allowaltscreen = true;
+static int allowaltscreen = 1;
 
 /* frames per second st should at maximum draw to the screen */
 static unsigned int xfps = 120;
@@ -381,4 +381,3 @@ static Key key[] = {
 static uint selmasks[] = {
 	[SEL_RECTANGULAR] = Mod1Mask,
 };
-
diff --git a/st.c b/st.c
index 0260562..7423840 100644
--- a/st.c
+++ b/st.c
@@ -6,7 +6,6 @@
 #include <locale.h>
 #include <pwd.h>
 #include <stdarg.h>
-#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -231,7 +230,7 @@ typedef struct {
 	int col;      /* nb col */
 	Line *line;   /* screen */
 	Line *alt;    /* alternate screen */
-	bool *dirty;  /* dirtyness of lines */
+	int  *dirty;  /* dirtyness of lines */
 	XftGlyphFontSpec *specbuf; /* font spec buffer used for rendering */
 	TCursor c;    /* cursor */
 	int top;      /* top    scroll limit */
@@ -241,8 +240,8 @@ typedef struct {
 	char trantbl[4]; /* charset table translation */
 	int charset;  /* current charset */
 	int icharset; /* selected charset for sequence */
-	bool numlock; /* lock numbers in keyboard */
-	bool *tabs;
+	int numlock; /* lock numbers in keyboard */
+	int *tabs;
 } Term;
 
 /* Purely graphic info */
@@ -258,7 +257,7 @@ typedef struct {
 	Visual *vis;
 	XSetWindowAttributes attrs;
 	int scr;
-	bool isfixed; /* is fixed geometry? */
+	int isfixed; /* is fixed geometry? */
 	int l, t; /* left and top offset */
 	int gm; /* geometry mask */
 	int tw, th; /* tty width and height */
@@ -302,7 +301,7 @@ typedef struct {
 
 	char *primary, *clipboard;
 	Atom xtarget;
-	bool alt;
+	int alt;
 	struct timespec tclick1;
 	struct timespec tclick2;
 } Selection;
@@ -403,14 +402,14 @@ static void tsetscroll(int, int);
 static void tswapscreen(void);
 static void tsetdirt(int, int);
 static void tsetdirtattr(int);
-static void tsetmode(bool, bool, int *, int);
+static void tsetmode(int, int, int *, int);
 static void tfulldirt(void);
 static void techo(Rune);
 static void tcontrolcode(uchar );
 static void tdectest(char );
 static int32_t tdefcolor(int *, int *, int);
 static void tdeftran(char);
-static inline bool match(uint, uint);
+static inline int match(uint, uint);
 static void ttynew(void);
 static void ttyread(void);
 static void ttyresize(void);
@@ -459,7 +458,7 @@ static void selrequest(XEvent *);
 
 static void selinit(void);
 static void selnormalize(void);
-static inline bool selected(int, int);
+static inline int selected(int, int);
 static char *getsel(void);
 static void selcopy(Time);
 static void selscroll(int, int);
@@ -734,10 +733,10 @@ selnormalize(void) {
 		sel.ne.x = term.col - 1;
 }
 
-bool
+int
 selected(int x, int y) {
 	if(sel.mode == SEL_EMPTY)
-		return false;
+		return 0;
 
 	if(sel.type == SEL_RECTANGULAR)
 		return BETWEEN(y, sel.nb.y, sel.ne.y)
@@ -751,7 +750,7 @@ selected(int x, int y) {
 void
 selsnap(int *x, int *y, int direction) {
 	int newx, newy, xt, yt;
-	bool delim, prevdelim;
+	int delim, prevdelim;
 	Glyph *gp, *prevgp;
 
 	switch(sel.snap) {
@@ -1456,7 +1455,7 @@ tfulldirt(void) {
 void
 tcursor(int mode) {
 	static TCursor c[2];
-	bool alt = IS_SET(MODE_ALTSCREEN);
+	int alt = IS_SET(MODE_ALTSCREEN);
 
 	if(mode == CURSOR_SAVE) {
 		c[alt] = term.c;
@@ -1915,9 +1914,9 @@ tsetscroll(int t, int b) {
 }
 
 void
-tsetmode(bool priv, bool set, int *args, int narg) {
+tsetmode(int priv, int set, int *args, int narg) {
 	int *lim, mode;
-	bool alt;
+	int alt;
 
 	for(lim = args + narg; args < lim; ++args) {
 		if(priv) {
@@ -2683,7 +2682,7 @@ eschandle(uchar ascii) {
 void
 tputc(Rune u) {
 	char c[UTF_SIZ];
-	bool control;
+	int control;
 	int width, len;
 	Glyph *gp;
 
@@ -2807,7 +2806,7 @@ tresize(int col, int row) {
 	int i;
 	int minrow = MIN(row, term.row);
 	int mincol = MIN(col, term.col);
-	bool *bp;
+	int *bp;
 	TCursor c;
 
 	if(col < 1 || row < 1) {
@@ -2903,7 +2902,7 @@ sixd_to_16bit(int x) {
 	return x == 0 ? 0 : 0x3737 + 0x2828 * x;
 }
 
-bool
+int
 xloadcolor(int i, const char *name, Color *ncolor) {
 	XRenderColor color = { .alpha = 0xffff };
 
@@ -2928,7 +2927,7 @@ xloadcolor(int i, const char *name, Color *ncolor) {
 void
 xloadcols(void) {
 	int i;
-	static bool loaded;
+	static int loaded;
 	Color *cp;
 
 	if(loaded) {
@@ -2943,7 +2942,7 @@ xloadcols(void) {
 			else
 				die("Could not allocate color %d\n", i);
 		}
-	loaded = true;
+	loaded = 1;
 }
 
 int
@@ -3663,7 +3662,7 @@ drawregion(int x1, int y1, int x2, int y2) {
 	int i, x, y, ox, numspecs;
 	Glyph base, new;
 	XftGlyphFontSpec* specs;
-	bool ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN);
+	int ena_sel = (sel.ob.x != -1) && (sel.alt == IS_SET(MODE_ALTSCREEN));
 
 	if(!(xw.state & WIN_VISIBLE))
 		return;
@@ -3756,7 +3755,7 @@ focus(XEvent *ev) {
 	}
 }
 
-bool
+int
 match(uint mask, uint state) {
 	return mask == XK_ANY_MOD || mask == (state & ~ignoremod);
 }
@@ -4024,7 +4023,7 @@ main(int argc, char *argv[]) {
 
 	ARGBEGIN {
 	case 'a':
-		allowaltscreen = false;
+		allowaltscreen = 0;
 		break;
 	case 'c':
 		opt_class = EARGF(usage());
-- 
1.8.5.5

>From 47d344b0f23fa88c62429ce634bfe843f44ee75c Mon Sep 17 00:00:00 2001
From: FRIGN <[email protected]>
Date: Wed, 8 Jul 2015 17:30:56 +0200
Subject: [PATCH 3/5] Align struct members

According to style(9)
---
 st.c | 128 +++++++++++++++++++++++++++++++++----------------------------------
 1 file changed, 64 insertions(+), 64 deletions(-)

diff --git a/st.c b/st.c
index 7423840..2c1c6e8 100644
--- a/st.c
+++ b/st.c
@@ -188,84 +188,84 @@ typedef XftDraw *Draw;
 typedef XftColor Color;
 
 typedef struct {
-	Rune u;           /* character code */
-	ushort mode;      /* attribute flags */
-	uint32_t fg;      /* foreground  */
-	uint32_t bg;      /* background  */
+	Rune     u;    /* character code */
+	ushort   mode; /* attribute flags */
+	uint32_t fg;   /* foreground  */
+	uint32_t bg;   /* background  */
 } Glyph;
 
 typedef Glyph *Line;
 
 typedef struct {
 	Glyph attr; /* current char attributes */
-	int x;
-	int y;
-	char state;
+	int   x;
+	int   y;
+	char  state;
 } TCursor;
 
 /* CSI Escape sequence structs */
 /* ESC '[' [[ [<priv>] <arg> [;]] <mode> [<mode>]] */
 typedef struct {
 	char buf[ESC_BUF_SIZ]; /* raw string */
-	int len;               /* raw string length */
+	int  len;              /* raw string length */
 	char priv;
-	int arg[ESC_ARG_SIZ];
-	int narg;              /* nb of args */
+	int  arg[ESC_ARG_SIZ];
+	int  narg;             /* nb of args */
 	char mode[2];
 } CSIEscape;
 
 /* STR Escape sequence structs */
 /* ESC type [[ [<priv>] <arg> [;]] <mode>] ESC '\' */
 typedef struct {
-	char type;             /* ESC type ... */
-	char buf[STR_BUF_SIZ]; /* raw string */
-	int len;               /* raw string length */
+	char type;               /* ESC type ... */
+	char buf[STR_BUF_SIZ];   /* raw string */
+	int  len;                /* raw string length */
 	char *args[STR_ARG_SIZ];
-	int narg;              /* nb of args */
+	int  narg;               /* nb of args */
 } STREscape;
 
 /* Internal representation of the screen */
 typedef struct {
-	int row;      /* nb row */
-	int col;      /* nb col */
-	Line *line;   /* screen */
-	Line *alt;    /* alternate screen */
-	int  *dirty;  /* dirtyness of lines */
+	int     row;        /* nb row */
+	int     col;        /* nb col */
+	Line    *line;      /* screen */
+	Line    *alt;       /* alternate screen */
+	int     *dirty;     /* dirtyness of lines */
 	XftGlyphFontSpec *specbuf; /* font spec buffer used for rendering */
-	TCursor c;    /* cursor */
-	int top;      /* top    scroll limit */
-	int bot;      /* bottom scroll limit */
-	int mode;     /* terminal mode flags */
-	int esc;      /* escape state flags */
-	char trantbl[4]; /* charset table translation */
-	int charset;  /* current charset */
-	int icharset; /* selected charset for sequence */
-	int numlock; /* lock numbers in keyboard */
-	int *tabs;
+	TCursor c;          /* cursor */
+	int     top;        /* top    scroll limit */
+	int     bot;        /* bottom scroll limit */
+	int     mode;       /* terminal mode flags */
+	int     esc;        /* escape state flags */
+	char    trantbl[4]; /* charset table translation */
+	int     charset;    /* current charset */
+	int     icharset;   /* selected charset for sequence */
+	int     numlock;    /* lock numbers in keyboard */
+	int     *tabs;
 } Term;
 
 /* Purely graphic info */
 typedef struct {
-	Display *dpy;
+	Display  *dpy;
 	Colormap cmap;
-	Window win;
+	Window   win;
 	Drawable buf;
-	Atom xembed, wmdeletewin, netwmname, netwmpid;
-	XIM xim;
-	XIC xic;
-	Draw draw;
-	Visual *vis;
+	Atom     xembed, wmdeletewin, netwmname, netwmpid;
+	XIM      xim;
+	XIC      xic;
+	Draw     draw;
+	Visual   *vis;
 	XSetWindowAttributes attrs;
-	int scr;
-	int isfixed; /* is fixed geometry? */
-	int l, t; /* left and top offset */
-	int gm; /* geometry mask */
-	int tw, th; /* tty width and height */
-	int w, h; /* window width and height */
-	int ch; /* char height */
-	int cw; /* char width  */
-	char state; /* focus, redraw, visible */
-	int cursor; /* cursor style */
+	int      scr;
+	int      isfixed; /* is fixed geometry? */
+	int      l, t;    /* left and top offset */
+	int      gm;      /* geometry mask */
+	int      tw, th;  /* tty width and height */
+	int      w, h;    /* window width and height */
+	int      ch;      /* char height */
+	int      cw;      /* char width  */
+	char     state;   /* focus, redraw, visible */
+	int      cursor;  /* cursor style */
 } XWindow;
 
 typedef struct {
@@ -276,8 +276,8 @@ typedef struct {
 
 typedef struct {
 	KeySym k;
-	uint mask;
-	char *s;
+	uint   mask;
+	char   *s;
 	/* three valued logic variables: 0 indifferent, 1 on, -1 off */
 	signed char appkey;    /* application keypad */
 	signed char appcursor; /* application cursor */
@@ -301,22 +301,22 @@ typedef struct {
 
 	char *primary, *clipboard;
 	Atom xtarget;
-	int alt;
+	int  alt;
 	struct timespec tclick1;
 	struct timespec tclick2;
 } Selection;
 
 typedef union {
-	int i;
-	uint ui;
+	int   i;
+	uint  ui;
 	float f;
 	const void *v;
 } Arg;
 
 typedef struct {
-	uint mod;
+	uint   mod;
 	KeySym keysym;
-	void (*func)(const Arg *);
+	void   (*func)(const Arg *);
 	const Arg arg;
 } Shortcut;
 
@@ -337,13 +337,13 @@ static void toggleprinter(const Arg *);
 
 /* Font structure */
 typedef struct {
-	int height;
-	int width;
-	int ascent;
-	int descent;
-	short lbearing;
-	short rbearing;
-	XftFont *match;
+	int       height;
+	int       width;
+	int       ascent;
+	int       descent;
+	short     lbearing;
+	short     rbearing;
+	XftFont   *match;
 	FcFontSet *set;
 	FcPattern *pattern;
 } Font;
@@ -351,8 +351,8 @@ typedef struct {
 /* Drawing Context */
 typedef struct {
 	Color col[MAX(LEN(colorname), 256)];
-	Font font, bfont, ifont, ibfont;
-	GC gc;
+	Font  font, bfont, ifont, ibfont;
+	GC    gc;
 } DC;
 
 static void die(const char *, ...);
@@ -541,8 +541,8 @@ enum {
 
 typedef struct {
 	XftFont *font;
-	int flags;
-	Rune unicodep;
+	int     flags;
+	Rune    unicodep;
 } Fontcache;
 
 /* Fontcache is an array now. A new font will be appended to the array. */
-- 
1.8.5.5

>From f1b6fa6605f496e3e29509454330d60206d90c98 Mon Sep 17 00:00:00 2001
From: FRIGN <[email protected]>
Date: Wed, 8 Jul 2015 20:29:54 +0200
Subject: [PATCH 4/5] Make style consistent

and bring the code to the guidelines brought in the suckless
styleguide.
This style is already used for the 19k+ lines of code of sbase
and ubase and has proven itself to be easy and fun to work with.

The patches in the wiki will be fixed accordingly, given they
are broken anyway for the current git head.
The earlier this style transition happens, the better. All future
work will be according to the general suckless style.
---
 st.c | 1509 +++++++++++++++++++++++++++++++++---------------------------------
 1 file changed, 744 insertions(+), 765 deletions(-)

diff --git a/st.c b/st.c
index 2c1c6e8..344b6cb 100644
--- a/st.c
+++ b/st.c
@@ -59,22 +59,24 @@ char *argv0;
 #define STR_ARG_SIZ   ESC_ARG_SIZ
 #define XK_ANY_MOD    UINT_MAX
 #define XK_NO_MOD     0
-#define XK_SWITCH_MOD (1<<13)
+#define XK_SWITCH_MOD (1 << 13)
 
 /* macros */
-#define MIN(a, b)  ((a) < (b) ? (a) : (b))
-#define MAX(a, b)  ((a) < (b) ? (b) : (a))
-#define LEN(a)     (sizeof(a) / sizeof(a)[0])
-#define DEFAULT(a, b)     (a) = (a) ? (a) : (b)
-#define BETWEEN(x, a, b)  ((a) <= (x) && (x) <= (b))
-#define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177')
-#define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f))
-#define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c))
-#define ISDELIM(u) (utf8strchr(worddelimiters, u) != NULL)
-#define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
-#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg)
-#define IS_SET(flag) ((term.mode & (flag)) != 0)
-#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_nsec-t2.tv_nsec)/1E6)
+#define MIN(a, b)           ((a) < (b) ? (a) : (b))
+#define MAX(a, b)           ((a) < (b) ? (b) : (a))
+#define LEN(a)              (sizeof(a) / sizeof(a)[0])
+#define DEFAULT(a, b)       (a) = (a) ? (a) : (b)
+#define BETWEEN(x, a, b)    ((a) <= (x) && (x) <= (b))
+#define ISCONTROLC0(c)      (BETWEEN(c, 0, 0x1f) || (c) == '\177')
+#define ISCONTROLC1(c)      (BETWEEN(c, 0x80, 0x9f))
+#define ISCONTROL(c)        (ISCONTROLC0(c) || ISCONTROLC1(c))
+#define ISDELIM(u)          (utf8strchr(worddelimiters, u) != NULL)
+#define LIMIT(x, a, b)      (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
+#define ATTRCMP(a, b)       ((a).mode != (b).mode || (a).fg != (b).fg || \
+                            (a).bg != (b).bg)
+#define IS_SET(flag)        ((term.mode & (flag)) != 0)
+#define TIMEDIFF(t1, t2)    (((t1).tv_sec - (t2).tv_sec) * 1000 + \
+                            ((t1).tv_nsec - (t2).tv_nsec) / 1E6)
 #define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
 
 #define TRUECOLOR(r,g,b) (1 << 24 | (r) << 16 | (g) << 8 | (b))
@@ -102,13 +104,13 @@ enum glyph_attribute {
 
 enum cursor_movement {
 	CURSOR_SAVE,
-	CURSOR_LOAD
+	CURSOR_LOAD,
 };
 
 enum cursor_state {
 	CURSOR_DEFAULT  = 0,
 	CURSOR_WRAPNEXT = 1,
-	CURSOR_ORIGIN   = 2
+	CURSOR_ORIGIN   = 2,
 };
 
 enum term_mode {
@@ -133,8 +135,8 @@ enum term_mode {
 	MODE_MOUSEMANY   = 1 << 18,
 	MODE_BRCKTPASTE  = 1 << 19,
 	MODE_PRINT       = 1 << 20,
-	MODE_MOUSE       = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\
-	                  |MODE_MOUSEMANY,
+	MODE_MOUSE       = MODE_MOUSEBTN | MODE_MOUSEMOTION | MODE_MOUSEX10 | \
+	                   MODE_MOUSEMANY,
 };
 
 enum charset {
@@ -144,7 +146,7 @@ enum charset {
 	CS_USA,
 	CS_MULTI,
 	CS_GER,
-	CS_FIN
+	CS_FIN,
 };
 
 enum escape_state {
@@ -153,28 +155,28 @@ enum escape_state {
 	ESC_STR        = 4,  /* DCS, OSC, PM, APC */
 	ESC_ALTCHARSET = 8,
 	ESC_STR_END    = 16, /* a final string was encountered */
-	ESC_TEST       = 32, /* Enter in test mode */
+	ESC_TEST       = 32, /* enter in test mode */
 };
 
 enum window_state {
 	WIN_VISIBLE = 1,
-	WIN_FOCUSED = 2
+	WIN_FOCUSED = 2,
 };
 
 enum selection_mode {
-	SEL_IDLE = 0,
+	SEL_IDLE  = 0,
 	SEL_EMPTY = 1,
-	SEL_READY = 2
+	SEL_READY = 2,
 };
 
 enum selection_type {
-	SEL_REGULAR = 1,
-	SEL_RECTANGULAR = 2
+	SEL_REGULAR     = 1,
+	SEL_RECTANGULAR = 2,
 };
 
 enum selection_snap {
 	SNAP_WORD = 1,
-	SNAP_LINE = 2
+	SNAP_LINE = 2,
 };
 
 typedef unsigned char uchar;
@@ -257,7 +259,7 @@ typedef struct {
 	Visual   *vis;
 	XSetWindowAttributes attrs;
 	int      scr;
-	int      isfixed; /* is fixed geometry? */
+	int      isfixed; /* fixed geometry */
 	int      l, t;    /* left and top offset */
 	int      gm;      /* geometry mask */
 	int      tw, th;  /* tty width and height */
@@ -332,7 +334,6 @@ static void printsel(const Arg *);
 static void printscreen(const Arg *) ;
 static void toggleprinter(const Arg *);
 
-/* Config.h for applying patches and the configuration. */
 #include "config.h"
 
 /* Font structure */
@@ -483,23 +484,23 @@ static char *xstrdup(char *);
 static void usage(void);
 
 static void (*handler[LASTEvent])(XEvent *) = {
-	[KeyPress] = kpress,
-	[ClientMessage] = cmessage,
-	[ConfigureNotify] = resize,
+	[KeyPress]         = kpress,
+	[ClientMessage]    = cmessage,
+	[ConfigureNotify]  = resize,
 	[VisibilityNotify] = visibility,
-	[UnmapNotify] = unmap,
-	[Expose] = expose,
-	[FocusIn] = focus,
-	[FocusOut] = focus,
-	[MotionNotify] = bmotion,
-	[ButtonPress] = bpress,
-	[ButtonRelease] = brelease,
+	[UnmapNotify]      = unmap,
+	[Expose]           = expose,
+	[FocusIn]          = focus,
+	[FocusOut]         = focus,
+	[MotionNotify]     = bmotion,
+	[ButtonPress]      = bpress,
+	[ButtonRelease]    = brelease,
 /*
  * Uncomment if you want the selection to disappear when you select something
  * different in another window.
  */
-/*	[SelectionClear] = selclear, */
-	[SelectionNotify] = selnotify,
+/*	[SelectionClear]   = selclear, */
+	[SelectionNotify]  = selnotify,
 	[SelectionRequest] = selrequest,
 };
 
@@ -526,10 +527,10 @@ static char *usedfont = NULL;
 static double usedfontsize = 0;
 static double defaultfontsize = 0;
 
-static uchar utfbyte[UTF_SIZ + 1] = {0x80,    0, 0xC0, 0xE0, 0xF0};
-static uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8};
-static Rune utfmin[UTF_SIZ + 1] = {       0,    0,  0x80,  0x800,  0x10000};
-static Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF};
+static uchar utfbyte[UTF_SIZ + 1] = { 0x80,    0, 0xC0, 0xE0, 0xF0 };
+static uchar utfmask[UTF_SIZ + 1] = { 0xC0, 0x80, 0xE0, 0xF0, 0xF8 };
+static Rune utfmin[UTF_SIZ + 1] = {        0,    0,  0x80,  0x800,  0x10000 };
+static Rune utfmax[UTF_SIZ + 1] = { 0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF };
 
 /* Font Ring Cache */
 enum {
@@ -553,21 +554,22 @@ ssize_t
 xwrite(int fd, const char *s, size_t len) {
 	size_t aux = len;
 
-	while(len > 0) {
+	while (len > 0) {
 		ssize_t r = write(fd, s, len);
-		if(r < 0)
+		if (r < 0)
 			return r;
 		len -= r;
 		s += r;
 	}
+
 	return aux;
 }
 
 void *
 xmalloc(size_t len) {
-	void *p = malloc(len);
+	void *p;
 
-	if(!p)
+	if (!(p = malloc(len)))
 		die("Out of memory\n");
 
 	return p;
@@ -575,7 +577,7 @@ xmalloc(size_t len) {
 
 void *
 xrealloc(void *p, size_t len) {
-	if((p = realloc(p, len)) == NULL)
+	if (!(p = realloc(p, len)))
 		die("Out of memory\n");
 
 	return p;
@@ -583,7 +585,7 @@ xrealloc(void *p, size_t len) {
 
 char *
 xstrdup(char *s) {
-	if((s = strdup(s)) == NULL)
+	if (!(s = strdup(s)))
 		die("Out of memory\n");
 
 	return s;
@@ -591,32 +593,34 @@ xstrdup(char *s) {
 
 size_t
 utf8decode(char *c, Rune *u, size_t clen) {
-	size_t i, j, len, type;
 	Rune udecoded;
+	size_t i, j, len, type;
 
 	*u = UTF_INVALID;
-	if(!clen)
+	if (!clen)
 		return 0;
 	udecoded = utf8decodebyte(c[0], &len);
-	if(!BETWEEN(len, 1, UTF_SIZ))
+	if (!BETWEEN(len, 1, UTF_SIZ))
 		return 1;
-	for(i = 1, j = 1; i < clen && j < len; ++i, ++j) {
+	for (i = 1, j = 1; i < clen && j < len; ++i, ++j) {
 		udecoded = (udecoded << 6) | utf8decodebyte(c[i], &type);
-		if(type != 0)
+		if (type != 0)
 			return j;
 	}
-	if(j < len)
+	if (j < len)
 		return 0;
 	*u = udecoded;
 	utf8validate(u, len);
+
 	return len;
 }
 
 Rune
 utf8decodebyte(char c, size_t *i) {
-	for(*i = 0; *i < LEN(utfmask); ++(*i))
-		if(((uchar)c & utfmask[*i]) == utfbyte[*i])
+	for (*i = 0; *i < LEN(utfmask); ++(*i))
+		if (((uchar)c & utfmask[*i]) == utfbyte[*i])
 			return (uchar)c & ~utfmask[*i];
+
 	return 0;
 }
 
@@ -625,13 +629,14 @@ utf8encode(Rune u, char *c) {
 	size_t len, i;
 
 	len = utf8validate(&u, 0);
-	if(len > UTF_SIZ)
+	if (len > UTF_SIZ)
 		return 0;
-	for(i = len - 1; i != 0; --i) {
+	for (i = len - 1; i != 0; --i) {
 		c[i] = utf8encodebyte(u, 0);
 		u >>= 6;
 	}
 	c[0] = utf8encodebyte(u, len);
+
 	return len;
 }
 
@@ -646,21 +651,23 @@ utf8strchr(char *s, Rune u) {
 	size_t i, j, len;
 
 	len = strlen(s);
-	for(i = 0, j = 0; i < len; i += j) {
-		if(!(j = utf8decode(&s[i], &r, len - i)))
+	for (i = 0, j = 0; i < len; i += j) {
+		if (!(j = utf8decode(&s[i], &r, len - i)))
 			break;
-		if(r == u)
+		if (r == u)
 			return &(s[i]);
 	}
+
 	return NULL;
 }
 
 size_t
 utf8validate(Rune *u, size_t i) {
-	if(!BETWEEN(*u, utfmin[i], utfmax[i]) || BETWEEN(*u, 0xD800, 0xDFFF))
+	if (!BETWEEN(*u, utfmin[i], utfmax[i]) || BETWEEN(*u, 0xD800, 0xDFFF))
 		*u = UTF_INVALID;
-	for(i = 1; *u > utfmax[i]; ++i)
+	for (i = 1; *u > utfmax[i]; ++i)
 		;
+
 	return i;
 }
 
@@ -668,12 +675,12 @@ void
 selinit(void) {
 	memset(&sel.tclick1, 0, sizeof(sel.tclick1));
 	memset(&sel.tclick2, 0, sizeof(sel.tclick2));
-	sel.mode = SEL_IDLE;
-	sel.ob.x = -1;
-	sel.primary = NULL;
+	sel.mode      = SEL_IDLE;
+	sel.ob.x      = -1;
+	sel.primary   = NULL;
 	sel.clipboard = NULL;
-	sel.xtarget = XInternAtom(xw.dpy, "UTF8_STRING", 0);
-	if(sel.xtarget == None)
+	sel.xtarget   = XInternAtom(xw.dpy, "UTF8_STRING", 0);
+	if (sel.xtarget == None)
 		sel.xtarget = XA_STRING;
 }
 
@@ -682,7 +689,7 @@ x2col(int x) {
 	x -= borderpx;
 	x /= xw.cw;
 
-	return LIMIT(x, 0, term.col-1);
+	return LIMIT(x, 0, term.col - 1);
 }
 
 int
@@ -690,17 +697,17 @@ y2row(int y) {
 	y -= borderpx;
 	y /= xw.ch;
 
-	return LIMIT(y, 0, term.row-1);
+	return LIMIT(y, 0, term.row - 1);
 }
 
 int
 tlinelen(int y) {
 	int i = term.col;
 
-	if(term.line[y][i - 1].mode & ATTR_WRAP)
+	if (term.line[y][i - 1].mode & ATTR_WRAP)
 		return i;
 
-	while(i > 0 && term.line[y][i - 1].u == ' ')
+	while (i > 0 && term.line[y][i - 1].u == ' ')
 		--i;
 
 	return i;
@@ -710,7 +717,7 @@ void
 selnormalize(void) {
 	int i;
 
-	if(sel.type == SEL_REGULAR && sel.ob.y != sel.oe.y) {
+	if (sel.type == SEL_REGULAR && sel.ob.y != sel.oe.y) {
 		sel.nb.x = sel.ob.y < sel.oe.y ? sel.ob.x : sel.oe.x;
 		sel.ne.x = sel.ob.y < sel.oe.y ? sel.oe.x : sel.ob.x;
 	} else {
@@ -735,25 +742,25 @@ selnormalize(void) {
 
 int
 selected(int x, int y) {
-	if(sel.mode == SEL_EMPTY)
+	if (sel.mode == SEL_EMPTY)
 		return 0;
 
-	if(sel.type == SEL_RECTANGULAR)
-		return BETWEEN(y, sel.nb.y, sel.ne.y)
-		    && BETWEEN(x, sel.nb.x, sel.ne.x);
+	if (sel.type == SEL_RECTANGULAR)
+		return BETWEEN(y, sel.nb.y, sel.ne.y) &&
+		       BETWEEN(x, sel.nb.x, sel.ne.x);
 
-	return BETWEEN(y, sel.nb.y, sel.ne.y)
-	    && (y != sel.nb.y || x >= sel.nb.x)
-	    && (y != sel.ne.y || x <= sel.ne.x);
+	return BETWEEN(y, sel.nb.y, sel.ne.y) &&
+	       (y != sel.nb.y || x >= sel.nb.x) &&
+	       (y != sel.ne.y || x <= sel.ne.x);
 }
 
 void
 selsnap(int *x, int *y, int direction) {
+	Glyph *gp, *prevgp;
 	int newx, newy, xt, yt;
 	int delim, prevdelim;
-	Glyph *gp, *prevgp;
 
-	switch(sel.snap) {
+	switch (sel.snap) {
 	case SNAP_WORD:
 		/*
 		 * Snap around if the word wraps around at the end or
@@ -761,20 +768,20 @@ selsnap(int *x, int *y, int direction) {
 		 */
 		prevgp = &term.line[*y][*x];
 		prevdelim = ISDELIM(prevgp->u);
-		for(;;) {
+		for (;;) {
 			newx = *x + direction;
 			newy = *y;
-			if(!BETWEEN(newx, 0, term.col - 1)) {
+			if (!BETWEEN(newx, 0, term.col - 1)) {
 				newy += direction;
 				newx = (newx + term.col) % term.col;
 				if (!BETWEEN(newy, 0, term.row - 1))
 					break;
 
-				if(direction > 0)
+				if (direction > 0)
 					yt = *y, xt = *x;
 				else
 					yt = newy, xt = newx;
-				if(!(term.line[yt][xt].mode & ATTR_WRAP))
+				if (!(term.line[yt][xt].mode & ATTR_WRAP))
 					break;
 			}
 
@@ -783,8 +790,8 @@ selsnap(int *x, int *y, int direction) {
 
 			gp = &term.line[newy][newx];
 			delim = ISDELIM(gp->u);
-			if(!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim
-					|| (delim && gp->u != prevgp->u)))
+			if (!(gp->mode & ATTR_WDUMMY) &&
+			    (delim != prevdelim || (delim && gp->u != prevgp->u)))
 				break;
 
 			*x = newx;
@@ -800,17 +807,15 @@ selsnap(int *x, int *y, int direction) {
 		 * previous line will be selected.
 		 */
 		*x = (direction < 0) ? 0 : term.col - 1;
-		if(direction < 0) {
-			for(; *y > 0; *y += direction) {
-				if(!(term.line[*y-1][term.col-1].mode
-						& ATTR_WRAP)) {
+		if (direction < 0) {
+			for (; *y > 0; *y += direction) {
+				if (!(term.line[*y - 1][term.col - 1].mode & ATTR_WRAP)) {
 					break;
 				}
 			}
-		} else if(direction > 0) {
-			for(; *y < term.row-1; *y += direction) {
-				if(!(term.line[*y][term.col-1].mode
-						& ATTR_WRAP)) {
+		} else if (direction > 0) {
+			for (; *y < term.row - 1; *y += direction) {
+				if (!(term.line[*y][term.col - 1].mode & ATTR_WRAP)) {
 					break;
 				}
 			}
@@ -824,15 +829,15 @@ getbuttoninfo(XEvent *e) {
 	int type;
 	uint state = e->xbutton.state & ~(Button1Mask | forceselmod);
 
-	sel.alt = IS_SET(MODE_ALTSCREEN);
+	sel.alt  = IS_SET(MODE_ALTSCREEN);
 
 	sel.oe.x = x2col(e->xbutton.x);
 	sel.oe.y = y2row(e->xbutton.y);
 	selnormalize();
 
 	sel.type = SEL_REGULAR;
-	for(type = 1; type < LEN(selmasks); ++type) {
-		if(match(selmasks[type], state)) {
+	for (type = 1; type < LEN(selmasks); ++type) {
+		if (match(selmasks[type], state)) {
 			sel.type = type;
 			break;
 		}
@@ -842,59 +847,58 @@ getbuttoninfo(XEvent *e) {
 void
 mousereport(XEvent *e) {
 	int x = x2col(e->xbutton.x), y = y2row(e->xbutton.y),
-	    button = e->xbutton.button, state = e->xbutton.state,
-	    len;
-	char buf[40];
+	    button = e->xbutton.button, state = e->xbutton.state, len;
 	static int ox, oy;
+	char buf[40];
 
 	/* from urxvt */
-	if(e->xbutton.type == MotionNotify) {
-		if(x == ox && y == oy)
+	if (e->xbutton.type == MotionNotify) {
+		if (x == ox && y == oy)
 			return;
-		if(!IS_SET(MODE_MOUSEMOTION) && !IS_SET(MODE_MOUSEMANY))
+		if (!IS_SET(MODE_MOUSEMOTION) && !IS_SET(MODE_MOUSEMANY))
 			return;
 		/* MOUSE_MOTION: no reporting if no button is pressed */
-		if(IS_SET(MODE_MOUSEMOTION) && oldbutton == 3)
+		if (IS_SET(MODE_MOUSEMOTION) && oldbutton == 3)
 			return;
 
 		button = oldbutton + 32;
 		ox = x;
 		oy = y;
 	} else {
-		if(!IS_SET(MODE_MOUSESGR) && e->xbutton.type == ButtonRelease) {
+		if (!IS_SET(MODE_MOUSESGR) && e->xbutton.type == ButtonRelease) {
 			button = 3;
 		} else {
 			button -= Button1;
-			if(button >= 3)
+			if (button >= 3)
 				button += 64 - 3;
 		}
-		if(e->xbutton.type == ButtonPress) {
+		if (e->xbutton.type == ButtonPress) {
 			oldbutton = button;
 			ox = x;
 			oy = y;
-		} else if(e->xbutton.type == ButtonRelease) {
+		} else if (e->xbutton.type == ButtonRelease) {
 			oldbutton = 3;
 			/* MODE_MOUSEX10: no button release reporting */
-			if(IS_SET(MODE_MOUSEX10))
+			if (IS_SET(MODE_MOUSEX10))
 				return;
 			if (button == 64 || button == 65)
 				return;
 		}
 	}
 
-	if(!IS_SET(MODE_MOUSEX10)) {
-		button += ((state & ShiftMask  ) ? 4  : 0)
-			+ ((state & Mod4Mask   ) ? 8  : 0)
-			+ ((state & ControlMask) ? 16 : 0);
+	if (!IS_SET(MODE_MOUSEX10)) {
+		button += ((state & ShiftMask  ) ? 4  : 0) +
+		          ((state & Mod4Mask   ) ? 8  : 0) +
+		          ((state & ControlMask) ? 16 : 0);
 	}
 
-	if(IS_SET(MODE_MOUSESGR)) {
+	if (IS_SET(MODE_MOUSESGR)) {
 		len = snprintf(buf, sizeof(buf), "\033[<%d;%d;%d%c",
-				button, x+1, y+1,
-				e->xbutton.type == ButtonRelease ? 'm' : 'M');
-	} else if(x < 223 && y < 223) {
+		               button, x + 1, y + 1,
+		               e->xbutton.type == ButtonRelease ? 'm' : 'M');
+	} else if (x < 223 && y < 223) {
 		len = snprintf(buf, sizeof(buf), "\033[M%c%c%c",
-				32+button, 32+x+1, 32+y+1);
+		               32 + button, 32 + x + 1, 32 + y + 1);
 	} else {
 		return;
 	}
@@ -907,20 +911,20 @@ bpress(XEvent *e) {
 	struct timespec now;
 	Mousekey *mk;
 
-	if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
+	if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
 		mousereport(e);
 		return;
 	}
 
-	for(mk = mshortcuts; mk < mshortcuts + LEN(mshortcuts); mk++) {
-		if(e->xbutton.button == mk->b
-				&& match(mk->mask, e->xbutton.state)) {
+	for (mk = mshortcuts; mk < mshortcuts + LEN(mshortcuts); mk++) {
+		if (e->xbutton.button == mk->b &&
+		    match(mk->mask, e->xbutton.state)) {
 			ttysend(mk->s, strlen(mk->s));
 			return;
 		}
 	}
 
-	if(e->xbutton.button == Button1) {
+	if (e->xbutton.button == Button1) {
 		clock_gettime(CLOCK_MONOTONIC, &now);
 
 		/* Clear previous selection, logically and visually. */
@@ -934,16 +938,16 @@ bpress(XEvent *e) {
 		 * If the user clicks below predefined timeouts specific
 		 * snapping behaviour is exposed.
 		 */
-		if(TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) {
+		if (TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) {
 			sel.snap = SNAP_LINE;
-		} else if(TIMEDIFF(now, sel.tclick1) <= doubleclicktimeout) {
+		} else if (TIMEDIFF(now, sel.tclick1) <= doubleclicktimeout) {
 			sel.snap = SNAP_WORD;
 		} else {
 			sel.snap = 0;
 		}
 		selnormalize();
 
-		if(sel.snap != 0)
+		if (sel.snap)
 			sel.mode = SEL_READY;
 		tsetdirt(sel.nb.y, sel.ne.y);
 		sel.tclick2 = sel.tclick1;
@@ -953,33 +957,33 @@ bpress(XEvent *e) {
 
 char *
 getsel(void) {
-	char *str, *ptr;
-	int y, bufsize, lastx, linelen;
 	Glyph *gp, *last;
+	int y, bufsize, lastx, linelen;
+	char *str, *ptr;
 
-	if(sel.ob.x == -1)
+	if (sel.ob.x == -1)
 		return NULL;
 
-	bufsize = (term.col+1) * (sel.ne.y-sel.nb.y+1) * UTF_SIZ;
+	bufsize = (term.col + 1) * (sel.ne.y - sel.nb.y + 1) * UTF_SIZ;
 	ptr = str = xmalloc(bufsize);
 
 	/* append every set & selected glyph to the selection */
-	for(y = sel.nb.y; y <= sel.ne.y; y++) {
+	for (y = sel.nb.y; y <= sel.ne.y; y++) {
 		linelen = tlinelen(y);
 
-		if(sel.type == SEL_RECTANGULAR) {
+		if (sel.type == SEL_RECTANGULAR) {
 			gp = &term.line[y][sel.nb.x];
 			lastx = sel.ne.x;
 		} else {
 			gp = &term.line[y][sel.nb.y == y ? sel.nb.x : 0];
-			lastx = (sel.ne.y == y) ? sel.ne.x : term.col-1;
+			lastx = (sel.ne.y == y) ? sel.ne.x : term.col - 1;
 		}
-		last = &term.line[y][MIN(lastx, linelen-1)];
-		while(last >= gp && last->u == ' ')
+		last = &term.line[y][MIN(lastx, linelen - 1)];
+		while (last >= gp && last->u == ' ')
 			--last;
 
-		for( ; gp <= last; ++gp) {
-			if(gp->mode & ATTR_WDUMMY)
+		for ( ; gp <= last; ++gp) {
+			if (gp->mode & ATTR_WDUMMY)
 				continue;
 
 			ptr += utf8encode(gp->u, ptr);
@@ -994,10 +998,11 @@ getsel(void) {
 		 * st.
 		 * FIXME: Fix the computer world.
 		 */
-		if((y < sel.ne.y || lastx >= linelen) && !(last->mode & ATTR_WRAP))
+		if ((y < sel.ne.y || lastx >= linelen) && !(last->mode & ATTR_WRAP))
 			*ptr++ = '\n';
 	}
 	*ptr = 0;
+
 	return str;
 }
 
@@ -1008,21 +1013,20 @@ selcopy(Time t) {
 
 void
 selnotify(XEvent *e) {
+	Atom type;
+	XSelectionEvent *xsev;
 	ulong nitems, ofs, rem;
 	int format;
 	uchar *data, *last, *repl;
-	Atom type;
-	XSelectionEvent *xsev;
 
 	ofs = 0;
 	xsev = &e->xselection;
 	if (xsev->property == None)
 	    return;
 	do {
-		if(XGetWindowProperty(xw.dpy, xw.win, xsev->property, ofs,
-					BUFSIZ/4, False, AnyPropertyType,
-					&type, &format, &nitems, &rem,
-					&data)) {
+		if (XGetWindowProperty(xw.dpy, xw.win, xsev->property, ofs,
+		                       BUFSIZ/4, 0, AnyPropertyType,
+		                       &type, &format, &nitems, &rem, &data)) {
 			fprintf(stderr, "Clipboard allocation failed\n");
 			return;
 		}
@@ -1036,19 +1040,19 @@ selnotify(XEvent *e) {
 		 */
 		repl = data;
 		last = data + nitems * format / 8;
-		while((repl = memchr(repl, '\n', last - repl))) {
+		while ((repl = memchr(repl, '\n', last - repl))) {
 			*repl++ = '\r';
 		}
 
-		if(IS_SET(MODE_BRCKTPASTE))
+		if (IS_SET(MODE_BRCKTPASTE))
 			ttywrite("\033[200~", 6);
 		ttysend((char *)data, nitems * format / 8);
-		if(IS_SET(MODE_BRCKTPASTE))
+		if (IS_SET(MODE_BRCKTPASTE))
 			ttywrite("\033[201~", 6);
 		XFree(data);
 		/* number of 32-bit chunks returned */
 		ofs += nitems * format / 32;
-	} while(rem > 0);
+	} while (rem > 0);
 }
 
 void
@@ -1061,10 +1065,10 @@ void
 clipcopy(const Arg *dummy) {
 	Atom clipboard;
 
-	if(sel.clipboard != NULL)
+	if (sel.clipboard)
 		free(sel.clipboard);
 
-	if(sel.primary != NULL) {
+	if (sel.primary) {
 		sel.clipboard = xstrdup(sel.primary);
 		clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0);
 		XSetSelectionOwner(xw.dpy, clipboard, xw.win, CurrentTime);
@@ -1077,12 +1081,12 @@ clippaste(const Arg *dummy) {
 
 	clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0);
 	XConvertSelection(xw.dpy, clipboard, sel.xtarget, clipboard,
-			xw.win, CurrentTime);
+	                  xw.win, CurrentTime);
 }
 
 void
 selclear(XEvent *e) {
-	if(sel.ob.x == -1)
+	if (sel.ob.x == -1)
 		return;
 	sel.mode = SEL_IDLE;
 	sel.ob.x = -1;
@@ -1091,17 +1095,17 @@ selclear(XEvent *e) {
 
 void
 selrequest(XEvent *e) {
-	XSelectionRequestEvent *xsre;
-	XSelectionEvent xev;
 	Atom xa_targets, string, clipboard;
+	XSelectionEvent xev;
+	XSelectionRequestEvent *xsre;
 	char *seltext;
 
-	xsre = (XSelectionRequestEvent *) e;
-	xev.type = SelectionNotify;
+	xsre          = (XSelectionRequestEvent *) e;
+	xev.type      = SelectionNotify;
 	xev.requestor = xsre->requestor;
 	xev.selection = xsre->selection;
-	xev.target = xsre->target;
-	xev.time = xsre->time;
+	xev.target    = xsre->target;
+	xev.time      = xsre->time;
 	if (xsre->property == None)
 		xsre->property = xsre->target;
 
@@ -1109,40 +1113,38 @@ selrequest(XEvent *e) {
 	xev.property = None;
 
 	xa_targets = XInternAtom(xw.dpy, "TARGETS", 0);
-	if(xsre->target == xa_targets) {
+	if (xsre->target == xa_targets) {
 		/* respond with the supported type */
 		string = sel.xtarget;
 		XChangeProperty(xsre->display, xsre->requestor, xsre->property,
-				XA_ATOM, 32, PropModeReplace,
-				(uchar *) &string, 1);
+		                XA_ATOM, 32, PropModeReplace, (uchar *) &string, 1);
 		xev.property = xsre->property;
-	} else if(xsre->target == sel.xtarget || xsre->target == XA_STRING) {
+	} else if (xsre->target == sel.xtarget || xsre->target == XA_STRING) {
 		/*
 		 * xith XA_STRING non ascii characters may be incorrect in the
 		 * requestor. It is not our problem, use utf8.
 		 */
 		clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0);
-		if(xsre->selection == XA_PRIMARY) {
+		if (xsre->selection == XA_PRIMARY) {
 			seltext = sel.primary;
-		} else if(xsre->selection == clipboard) {
+		} else if (xsre->selection == clipboard) {
 			seltext = sel.clipboard;
 		} else {
-			fprintf(stderr,
-				"Unhandled clipboard selection 0x%lx\n",
-				xsre->selection);
+			fprintf(stderr, "Unhandled clipboard selection 0x%lx\n",
+			        xsre->selection);
 			return;
 		}
-		if(seltext != NULL) {
+		if (seltext) {
 			XChangeProperty(xsre->display, xsre->requestor,
-					xsre->property, xsre->target,
-					8, PropModeReplace,
-					(uchar *)seltext, strlen(seltext));
+			                xsre->property, xsre->target,
+			                8, PropModeReplace,
+			                (uchar *)seltext, strlen(seltext));
 			xev.property = xsre->property;
 		}
 	}
 
 	/* all done, send a notification to the listener */
-	if(!XSendEvent(xsre->display, xsre->requestor, True, 0, (XEvent *) &xev))
+	if (!XSendEvent(xsre->display, xsre->requestor, 1, 0, (XEvent *) &xev))
 		fprintf(stderr, "Error sending SelectionNotify event\n");
 }
 
@@ -1158,19 +1160,20 @@ xsetsel(char *str, Time t) {
 
 void
 brelease(XEvent *e) {
-	if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
+	if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
 		mousereport(e);
 		return;
 	}
 
-	if(e->xbutton.button == Button2) {
+	if (e->xbutton.button == Button2) {
 		selpaste(NULL);
-	} else if(e->xbutton.button == Button1) {
-		if(sel.mode == SEL_READY) {
+	} else if (e->xbutton.button == Button1) {
+		if (sel.mode == SEL_READY) {
 			getbuttoninfo(e);
 			selcopy(e->xbutton.time);
-		} else
+		} else {
 			selclear(NULL);
+		}
 		sel.mode = SEL_IDLE;
 		tsetdirt(sel.nb.y, sel.ne.y);
 	}
@@ -1180,22 +1183,22 @@ void
 bmotion(XEvent *e) {
 	int oldey, oldex, oldsby, oldsey;
 
-	if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
+	if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
 		mousereport(e);
 		return;
 	}
 
-	if(!sel.mode)
+	if (!sel.mode)
 		return;
 
 	sel.mode = SEL_READY;
-	oldey = sel.oe.y;
-	oldex = sel.oe.x;
-	oldsby = sel.nb.y;
-	oldsey = sel.ne.y;
+	oldey    = sel.oe.y;
+	oldex    = sel.oe.x;
+	oldsby   = sel.nb.y;
+	oldsey   = sel.ne.y;
 	getbuttoninfo(e);
 
-	if(oldey != sel.oe.y || oldex != sel.oe.x)
+	if (oldey != sel.oe.y || oldex != sel.oe.x)
 		tsetdirt(MIN(sel.nb.y, oldsby), MAX(sel.ne.y, oldsey));
 }
 
@@ -1206,6 +1209,7 @@ die(const char *errstr, ...) {
 	va_start(ap, errstr);
 	vfprintf(stderr, errstr, ap);
 	va_end(ap);
+
 	exit(1);
 }
 
@@ -1216,8 +1220,8 @@ execsh(void) {
 	char buf[sizeof(long) * 8 + 1];
 
 	errno = 0;
-	if((pw = getpwuid(getuid())) == NULL) {
-		if(errno)
+	if (!(pw = getpwuid(getuid()))) {
+		if (errno)
 			die("getpwuid:%s\n", strerror(errno));
 		else
 			die("who are you?\n");
@@ -1227,9 +1231,9 @@ execsh(void) {
 		sh = (pw->pw_shell[0]) ? pw->pw_shell : shell;
 	}
 
-	if(opt_cmd)
+	if (opt_cmd)
 		prog = opt_cmd[0];
-	else if(utmp)
+	else if (utmp)
 		prog = utmp;
 	else
 		prog = sh;
@@ -1255,22 +1259,24 @@ execsh(void) {
 	signal(SIGALRM, SIG_DFL);
 
 	execvp(prog, args);
+
 	_exit(1);
 }
 
 void
 sigchld(int a) {
-	int stat;
 	pid_t p;
+	int stat;
 
-	if((p = waitpid(pid, &stat, WNOHANG)) < 0)
+	if ((p = waitpid(pid, &stat, WNOHANG)) < 0)
 		die("Waiting for pid %hd failed: %s\n", pid, strerror(errno));
 
-	if(pid != p)
+	if (pid != p)
 		return;
 
 	if (!WIFEXITED(stat) || WEXITSTATUS(stat))
 		die("child finished with error '%d'\n", stat);
+
 	exit(0);
 }
 
@@ -1278,16 +1284,16 @@ sigchld(int a) {
 void
 stty(void)
 {
-	char cmd[_POSIX_ARG_MAX], **p, *q, *s;
 	size_t n, siz;
+	char cmd[_POSIX_ARG_MAX], **p, *q, *s;
 
-	if((n = strlen(stty_args)) > sizeof(cmd)-1)
+	if ((n = strlen(stty_args)) > sizeof(cmd) - 1)
 		die("incorrect stty parameters\n");
 	memcpy(cmd, stty_args, n);
 	q = cmd + n;
 	siz = sizeof(cmd) - n;
-	for(p = opt_cmd; p && (s = *p); ++p) {
-		if((n = strlen(s)) > siz-1)
+	for (p = opt_cmd; p && (s = *p); ++p) {
+		if ((n = strlen(s)) > siz - 1)
 			die("stty parameter length too long\n");
 		*q++ = ' ';
 		q = memcpy(q, s, n);
@@ -1301,20 +1307,20 @@ stty(void)
 
 void
 ttynew(void) {
+	struct winsize w = { term.row, term.col, 0, 0 };
 	int m, s;
-	struct winsize w = {term.row, term.col, 0, 0};
 
-	if(opt_io) {
+	if (opt_io) {
 		term.mode |= MODE_PRINT;
 		iofd = (!strcmp(opt_io, "-")) ? 1 : open(opt_io, O_WRONLY | O_CREAT, 0666);
-		if(iofd < 0) {
+		if (iofd < 0) {
 			fprintf(stderr, "Error opening %s:%s\n",
-				opt_io, strerror(errno));
+			        opt_io, strerror(errno));
 		}
 	}
 
 	if (opt_line) {
-		if((cmdfd = open(opt_line, O_RDWR)) < 0)
+		if ((cmdfd = open(opt_line, O_RDWR)) < 0)
 			die("open line failed: %s\n", strerror(errno));
 		close(0);
 		dup(cmdfd);
@@ -1323,10 +1329,10 @@ ttynew(void) {
 	}
 
 	/* seems to work fine on linux, openbsd and freebsd */
-	if(openpty(&m, &s, NULL, NULL, &w) < 0)
+	if (openpty(&m, &s, NULL, NULL, &w) < 0)
 		die("openpty failed: %s\n", strerror(errno));
 
-	switch(pid = fork()) {
+	switch (pid = fork()) {
 	case -1:
 		die("fork failed\n");
 		break;
@@ -1336,7 +1342,7 @@ ttynew(void) {
 		dup2(s, 0);
 		dup2(s, 1);
 		dup2(s, 2);
-		if(ioctl(s, TIOCSCTTY, NULL) < 0)
+		if (ioctl(s, TIOCSCTTY, NULL) < 0)
 			die("ioctl TIOCSCTTY failed: %s\n", strerror(errno));
 		close(s);
 		close(m);
@@ -1352,23 +1358,23 @@ ttynew(void) {
 
 void
 ttyread(void) {
-	static char buf[BUFSIZ];
+	Rune unicodep;
 	static int buflen = 0;
-	char *ptr;
 	int charsize; /* size of utf8 char in bytes */
-	Rune unicodep;
 	int ret;
+	static char buf[BUFSIZ];
+	char *ptr;
 
 	/* append read bytes to unprocessed bytes */
-	if((ret = read(cmdfd, buf+buflen, LEN(buf)-buflen)) < 0)
+	if ((ret = read(cmdfd, buf+buflen, LEN(buf) - buflen)) < 0)
 		die("Couldn't read from shell: %s\n", strerror(errno));
 
 	/* process every complete utf8 char */
 	buflen += ret;
 	ptr = buf;
-	while((charsize = utf8decode(ptr, &unicodep, buflen))) {
+	while ((charsize = utf8decode(ptr, &unicodep, buflen))) {
 		tputc(unicodep);
-		ptr += charsize;
+		ptr    += charsize;
 		buflen -= charsize;
 	}
 
@@ -1378,18 +1384,18 @@ ttyread(void) {
 
 void
 ttywrite(const char *s, size_t n) {
-	if(xwrite(cmdfd, s, n) == -1)
+	if (xwrite(cmdfd, s, n) == -1)
 		die("write error on tty: %s\n", strerror(errno));
 }
 
 void
 ttysend(char *s, size_t n) {
-	int len;
 	Rune u;
+	int len;
 
 	ttywrite(s, n);
-	if(IS_SET(MODE_ECHO))
-		while((len = utf8decode(s, &u, n)) > 0) {
+	if (IS_SET(MODE_ECHO))
+		while ((len = utf8decode(s, &u, n)) > 0) {
 			techo(u);
 			n -= len;
 			s += len;
@@ -1400,11 +1406,11 @@ void
 ttyresize(void) {
 	struct winsize w;
 
-	w.ws_row = term.row;
-	w.ws_col = term.col;
+	w.ws_row    = term.row;
+	w.ws_col    = term.col;
 	w.ws_xpixel = xw.tw;
 	w.ws_ypixel = xw.th;
-	if(ioctl(cmdfd, TIOCSWINSZ, &w) < 0)
+	if (ioctl(cmdfd, TIOCSWINSZ, &w) < 0)
 		fprintf(stderr, "Couldn't set window size: %s\n", strerror(errno));
 }
 
@@ -1412,9 +1418,9 @@ int
 tattrset(int attr) {
 	int i, j;
 
-	for(i = 0; i < term.row-1; i++) {
-		for(j = 0; j < term.col-1; j++) {
-			if(term.line[i][j].mode & attr)
+	for (i = 0; i < term.row - 1; i++) {
+		for (j = 0; j < term.col - 1; j++) {
+			if (term.line[i][j].mode & attr)
 				return 1;
 		}
 	}
@@ -1426,10 +1432,10 @@ void
 tsetdirt(int top, int bot) {
 	int i;
 
-	LIMIT(top, 0, term.row-1);
-	LIMIT(bot, 0, term.row-1);
+	LIMIT(top, 0, term.row - 1);
+	LIMIT(bot, 0, term.row - 1);
 
-	for(i = top; i <= bot; i++)
+	for (i = top; i <= bot; i++)
 		term.dirty[i] = 1;
 }
 
@@ -1437,9 +1443,9 @@ void
 tsetdirtattr(int attr) {
 	int i, j;
 
-	for(i = 0; i < term.row-1; i++) {
-		for(j = 0; j < term.col-1; j++) {
-			if(term.line[i][j].mode & attr) {
+	for (i = 0; i < term.row - 1; i++) {
+		for (j = 0; j < term.col - 1; j++) {
+			if (term.line[i][j].mode & attr) {
 				tsetdirt(i, i);
 				break;
 			}
@@ -1457,9 +1463,9 @@ tcursor(int mode) {
 	static TCursor c[2];
 	int alt = IS_SET(MODE_ALTSCREEN);
 
-	if(mode == CURSOR_SAVE) {
+	if (mode == CURSOR_SAVE) {
 		c[alt] = term.c;
-	} else if(mode == CURSOR_LOAD) {
+	} else if (mode == CURSOR_LOAD) {
 		term.c = c[alt];
 		tmoveto(c[alt].x, c[alt].y);
 	}
@@ -1476,18 +1482,18 @@ treset(void) {
 	}, .x = 0, .y = 0, .state = CURSOR_DEFAULT};
 
 	memset(term.tabs, 0, term.col * sizeof(*term.tabs));
-	for(i = tabspaces; i < term.col; i += tabspaces)
+	for (i = tabspaces; i < term.col; i += tabspaces)
 		term.tabs[i] = 1;
-	term.top = 0;
-	term.bot = term.row - 1;
+	term.top  = 0;
+	term.bot  = term.row - 1;
 	term.mode = MODE_WRAP;
 	memset(term.trantbl, CS_USA, sizeof(term.trantbl));
 	term.charset = 0;
 
-	for(i = 0; i < 2; i++) {
+	for (i = 0; i < 2; i++) {
 		tmoveto(0, 0);
 		tcursor(CURSOR_SAVE);
-		tclearregion(0, 0, term.col-1, term.row-1);
+		tclearregion(0, 0, term.col - 1, term.row - 1);
 		tswapscreen();
 	}
 }
@@ -1505,26 +1511,26 @@ void
 tswapscreen(void) {
 	Line *tmp = term.line;
 
-	term.line = term.alt;
-	term.alt = tmp;
+	term.line  = term.alt;
+	term.alt   = tmp;
 	term.mode ^= MODE_ALTSCREEN;
 	tfulldirt();
 }
 
 void
 tscrolldown(int orig, int n) {
-	int i;
 	Line temp;
+	int i;
 
-	LIMIT(n, 0, term.bot-orig+1);
+	LIMIT(n, 0, term.bot - orig + 1);
 
-	tsetdirt(orig, term.bot-n);
-	tclearregion(0, term.bot-n+1, term.col-1, term.bot);
+	tsetdirt(orig, term.bot - n);
+	tclearregion(0, term.bot - n + 1, term.col - 1, term.bot);
 
-	for(i = term.bot; i >= orig+n; i--) {
+	for (i = term.bot; i >= orig + n; i--) {
 		temp = term.line[i];
-		term.line[i] = term.line[i-n];
-		term.line[i-n] = temp;
+		term.line[i] = term.line[i - n];
+		term.line[i - n] = temp;
 	}
 
 	selscroll(orig, n);
@@ -1535,15 +1541,15 @@ tscrollup(int orig, int n) {
 	int i;
 	Line temp;
 
-	LIMIT(n, 0, term.bot-orig+1);
+	LIMIT(n, 0, term.bot - orig + 1);
 
-	tclearregion(0, orig, term.col-1, orig+n-1);
+	tclearregion(0, orig, term.col - 1, orig + n - 1);
 	tsetdirt(orig+n, term.bot);
 
-	for(i = orig; i <= term.bot-n; i++) {
+	for (i = orig; i <= term.bot - n; i++) {
 		temp = term.line[i];
-		term.line[i] = term.line[i+n];
-		term.line[i+n] = temp;
+		term.line[i] = term.line[i + n];
+		term.line[i + n] = temp;
 	}
 
 	selscroll(orig, -n);
@@ -1551,25 +1557,25 @@ tscrollup(int orig, int n) {
 
 void
 selscroll(int orig, int n) {
-	if(sel.ob.x == -1)
+	if (sel.ob.x == -1)
 		return;
 
-	if(BETWEEN(sel.ob.y, orig, term.bot) || BETWEEN(sel.oe.y, orig, term.bot)) {
-		if((sel.ob.y += n) > term.bot || (sel.oe.y += n) < term.top) {
+	if (BETWEEN(sel.ob.y, orig, term.bot) || BETWEEN(sel.oe.y, orig, term.bot)) {
+		if ((sel.ob.y += n) > term.bot || (sel.oe.y += n) < term.top) {
 			selclear(NULL);
 			return;
 		}
-		if(sel.type == SEL_RECTANGULAR) {
-			if(sel.ob.y < term.top)
+		if (sel.type == SEL_RECTANGULAR) {
+			if (sel.ob.y < term.top)
 				sel.ob.y = term.top;
-			if(sel.oe.y > term.bot)
+			if (sel.oe.y > term.bot)
 				sel.oe.y = term.bot;
 		} else {
-			if(sel.ob.y < term.top) {
+			if (sel.ob.y < term.top) {
 				sel.ob.y = term.top;
 				sel.ob.x = 0;
 			}
-			if(sel.oe.y > term.bot) {
+			if (sel.oe.y > term.bot) {
 				sel.oe.y = term.bot;
 				sel.oe.x = term.col;
 			}
@@ -1582,7 +1588,7 @@ void
 tnewline(int first_col) {
 	int y = term.c.y;
 
-	if(y == term.bot) {
+	if (y == term.bot) {
 		tscrollup(term.top, 1);
 	} else {
 		y++;
@@ -1592,26 +1598,26 @@ tnewline(int first_col) {
 
 void
 csiparse(void) {
-	char *p = csiescseq.buf, *np;
 	long int v;
+	char *p = csiescseq.buf, *np;
 
 	csiescseq.narg = 0;
-	if(*p == '?') {
+	if (*p == '?') {
 		csiescseq.priv = 1;
 		p++;
 	}
 
 	csiescseq.buf[csiescseq.len] = '\0';
-	while(p < csiescseq.buf+csiescseq.len) {
+	while (p < csiescseq.buf+csiescseq.len) {
 		np = NULL;
 		v = strtol(p, &np, 10);
-		if(np == p)
+		if (np == p)
 			v = 0;
-		if(v == LONG_MAX || v == LONG_MIN)
+		if (v == LONG_MAX || v == LONG_MIN)
 			v = -1;
 		csiescseq.arg[csiescseq.narg++] = v;
 		p = np;
-		if(*p != ';' || csiescseq.narg == ESC_ARG_SIZ)
+		if (*p != ';' || csiescseq.narg == ESC_ARG_SIZ)
 			break;
 		p++;
 	}
@@ -1622,14 +1628,14 @@ csiparse(void) {
 /* for absolute user moves, when decom is set */
 void
 tmoveato(int x, int y) {
-	tmoveto(x, y + ((term.c.state & CURSOR_ORIGIN) ? term.top: 0));
+	tmoveto(x, y + (term.c.state & CURSOR_ORIGIN) ? term.top : 0);
 }
 
 void
 tmoveto(int x, int y) {
 	int miny, maxy;
 
-	if(term.c.state & CURSOR_ORIGIN) {
+	if (term.c.state & CURSOR_ORIGIN) {
 		miny = term.top;
 		maxy = term.bot;
 	} else {
@@ -1637,42 +1643,42 @@ tmoveto(int x, int y) {
 		maxy = term.row - 1;
 	}
 	term.c.state &= ~CURSOR_WRAPNEXT;
-	term.c.x = LIMIT(x, 0, term.col-1);
+	term.c.x = LIMIT(x, 0, term.col - 1);
 	term.c.y = LIMIT(y, miny, maxy);
 }
 
 void
 tsetchar(Rune u, Glyph *attr, int x, int y) {
 	static 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 - _ */
+		"↑", "↓", "→", "←", "█", "▚", "☃",      /* 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 - ~ */
+		"│", "≤", "≥", "π", "≠", "£", "·",      /* x - ~ */
 	};
 
 	/*
 	 * The table is proudly stolen from rxvt.
 	 */
-	if(term.trantbl[term.charset] == CS_GRAPHIC0 &&
-	   BETWEEN(u, 0x41, 0x7e) && vt100_0[u - 0x41])
+	if (term.trantbl[term.charset] == CS_GRAPHIC0 &&
+	    BETWEEN(u, 0x41, 0x7e) && vt100_0[u - 0x41])
 		utf8decode(vt100_0[u - 0x41], &u, UTF_SIZ);
 
-	if(term.line[y][x].mode & ATTR_WIDE) {
-		if(x+1 < term.col) {
-			term.line[y][x+1].u = ' ';
-			term.line[y][x+1].mode &= ~ATTR_WDUMMY;
+	if (term.line[y][x].mode & ATTR_WIDE) {
+		if (x + 1 < term.col) {
+			term.line[y][x + 1].u     = ' ';
+			term.line[y][x + 1].mode &= ~ATTR_WDUMMY;
 		}
-	} else if(term.line[y][x].mode & ATTR_WDUMMY) {
-		term.line[y][x-1].u = ' ';
-		term.line[y][x-1].mode &= ~ATTR_WIDE;
+	} else if (term.line[y][x].mode & ATTR_WDUMMY) {
+		term.line[y][x - 1].u     = ' ';
+		term.line[y][x - 1].mode &= ~ATTR_WIDE;
 	}
 
-	term.dirty[y] = 1;
-	term.line[y][x] = *attr;
+	term.dirty[y]     = 1;
+	term.line[y][x]   = *attr;
 	term.line[y][x].u = u;
 }
 
@@ -1681,26 +1687,26 @@ tclearregion(int x1, int y1, int x2, int y2) {
 	int x, y, temp;
 	Glyph *gp;
 
-	if(x1 > x2)
+	if (x1 > x2)
 		temp = x1, x1 = x2, x2 = temp;
-	if(y1 > y2)
+	if (y1 > y2)
 		temp = y1, y1 = y2, y2 = temp;
 
-	LIMIT(x1, 0, term.col-1);
-	LIMIT(x2, 0, term.col-1);
-	LIMIT(y1, 0, term.row-1);
-	LIMIT(y2, 0, term.row-1);
+	LIMIT(x1, 0, term.col - 1);
+	LIMIT(x2, 0, term.col - 1);
+	LIMIT(y1, 0, term.row - 1);
+	LIMIT(y2, 0, term.row - 1);
 
-	for(y = y1; y <= y2; y++) {
+	for (y = y1; y <= y2; y++) {
 		term.dirty[y] = 1;
-		for(x = x1; x <= x2; x++) {
+		for (x = x1; x <= x2; x++) {
 			gp = &term.line[y][x];
-			if(selected(x, y))
+			if (selected(x, y))
 				selclear(NULL);
-			gp->fg = term.c.attr.fg;
-			gp->bg = term.c.attr.bg;
+			gp->fg   = term.c.attr.fg;
+			gp->bg   = term.c.attr.bg;
 			gp->mode = 0;
-			gp->u = ' ';
+			gp->u    = ' ';
 		}
 	}
 }
@@ -1712,13 +1718,13 @@ tdeletechar(int n) {
 
 	LIMIT(n, 0, term.col - term.c.x);
 
-	dst = term.c.x;
-	src = term.c.x + n;
+	dst  = term.c.x;
+	src  = term.c.x + n;
 	size = term.col - src;
 	line = term.line[term.c.y];
 
 	memmove(&line[dst], &line[src], size * sizeof(Glyph));
-	tclearregion(term.col-n, term.c.y, term.col-1, term.c.y);
+	tclearregion(term.col - n, term.c.y, term.col - 1, term.c.y);
 }
 
 void
@@ -1739,13 +1745,13 @@ tinsertblank(int n) {
 
 void
 tinsertblankline(int n) {
-	if(BETWEEN(term.c.y, term.top, term.bot))
+	if (BETWEEN(term.c.y, term.top, term.bot))
 		tscrolldown(term.c.y, n);
 }
 
 void
 tdeleteline(int n) {
-	if(BETWEEN(term.c.y, term.top, term.bot))
+	if (BETWEEN(term.c.y, term.top, term.bot))
 		tscrollup(term.c.y, n);
 }
 
@@ -1758,29 +1764,28 @@ tdefcolor(int *attr, int *npar, int l) {
 	case 2: /* direct color in RGB space */
 		if (*npar + 4 >= l) {
 			fprintf(stderr,
-				"erresc(38): Incorrect number of parameters (%d)\n",
-				*npar);
+			        "erresc(38): Incorrect number of parameters (%d)\n",
+			        *npar);
 			break;
 		}
 		r = attr[*npar + 2];
 		g = attr[*npar + 3];
 		b = attr[*npar + 4];
 		*npar += 4;
-		if(!BETWEEN(r, 0, 255) || !BETWEEN(g, 0, 255) || !BETWEEN(b, 0, 255))
-			fprintf(stderr, "erresc: bad rgb color (%u,%u,%u)\n",
-				r, g, b);
+		if (!BETWEEN(r, 0, 255) || !BETWEEN(g, 0, 255) || !BETWEEN(b, 0, 255))
+			fprintf(stderr, "erresc: bad rgb color (%u,%u,%u)\n", r, g, b);
 		else
 			idx = TRUECOLOR(r, g, b);
 		break;
 	case 5: /* indexed color */
 		if (*npar + 2 >= l) {
 			fprintf(stderr,
-				"erresc(38): Incorrect number of parameters (%d)\n",
-				*npar);
+			        "erresc(38): Incorrect number of parameters (%d)\n",
+			        *npar);
 			break;
 		}
 		*npar += 2;
-		if(!BETWEEN(attr[*npar], 0, 255))
+		if (!BETWEEN(attr[*npar], 0, 255))
 			fprintf(stderr, "erresc: bad fgcolor %d\n", attr[*npar]);
 		else
 			idx = attr[*npar];
@@ -1800,11 +1805,11 @@ tdefcolor(int *attr, int *npar, int l) {
 
 void
 tsetattr(int *attr, int l) {
-	int i;
 	int32_t idx;
+	int i;
 
-	for(i = 0; i < l; i++) {
-		switch(attr[i]) {
+	for (i = 0; i < l; i++) {
+		switch (attr[i]) {
 		case 0:
 			term.c.attr.mode &= ~(
 				ATTR_BOLD       |
@@ -1880,18 +1885,18 @@ tsetattr(int *attr, int l) {
 			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();
+				        "erresc(default): gfx attr %d unknown\n",
+				        attr[i]), csidump();
 			}
 			break;
 		}
@@ -1902,9 +1907,9 @@ void
 tsetscroll(int t, int b) {
 	int temp;
 
-	LIMIT(t, 0, term.row-1);
-	LIMIT(b, 0, term.row-1);
-	if(t > b) {
+	LIMIT(t, 0, term.row - 1);
+	LIMIT(b, 0, term.row - 1);
+	if (t > b) {
 		temp = t;
 		t = b;
 		b = temp;
@@ -1918,16 +1923,16 @@ tsetmode(int priv, int set, int *args, int narg) {
 	int *lim, mode;
 	int alt;
 
-	for(lim = args + narg; args < lim; ++args) {
-		if(priv) {
-			switch(*args) {
+	for (lim = args + narg; args < lim; ++args) {
+		if (priv) {
+			switch (*args) {
 			case 1: /* DECCKM -- Cursor key */
 				MODBIT(term.mode, set, MODE_APPCURSOR);
 				break;
 			case 5: /* DECSCNM -- Reverse video */
 				mode = term.mode;
 				MODBIT(term.mode, set, MODE_REVERSE);
-				if(mode != term.mode)
+				if (mode != term.mode)
 					redraw();
 				break;
 			case 6: /* DECOM -- Origin */
@@ -1989,13 +1994,12 @@ tsetmode(int priv, int set, int *args, int narg) {
 				if (!allowaltscreen)
 					break;
 				alt = IS_SET(MODE_ALTSCREEN);
-				if(alt) {
-					tclearregion(0, 0, term.col-1,
-							term.row-1);
+				if (alt) {
+					tclearregion(0, 0, term.col - 1, term.row - 1);
 				}
-				if(set ^ alt) /* set is always 1 or 0 */
+				if (set ^ alt) /* set is always 1 or 0 */
 					tswapscreen();
-				if(*args != 1049)
+				if (*args != 1049)
 					break;
 				/* FALLTHROUGH */
 			case 1048:
@@ -2015,12 +2019,12 @@ tsetmode(int priv, int set, int *args, int narg) {
 				      codes. */
 			default:
 				fprintf(stderr,
-					"erresc: unknown private set/reset mode %d\n",
-					*args);
+				        "erresc: unknown private set/reset mode %d\n",
+				        *args);
 				break;
 			}
 		} else {
-			switch(*args) {
+			switch (*args) {
 			case 0:  /* Error (IGNORED) */
 				break;
 			case 2:  /* KAM -- keyboard action */
@@ -2037,8 +2041,8 @@ tsetmode(int priv, int set, int *args, int narg) {
 				break;
 			default:
 				fprintf(stderr,
-					"erresc: unknown set/reset mode %d\n",
-					*args);
+				        "erresc: unknown set/reset mode %d\n",
+				        *args);
 				break;
 			}
 		}
@@ -2047,10 +2051,10 @@ tsetmode(int priv, int set, int *args, int narg) {
 
 void
 csihandle(void) {
-	char buf[40];
 	int len;
+	char buf[40];
 
-	switch(csiescseq.mode[0]) {
+	switch (csiescseq.mode[0]) {
 	default:
 	unknown:
 		fprintf(stderr, "erresc: unknown csi ");
@@ -2063,15 +2067,15 @@ csihandle(void) {
 		break;
 	case 'A': /* CUU -- Cursor <n> Up */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveto(term.c.x, term.c.y-csiescseq.arg[0]);
+		tmoveto(term.c.x, term.c.y - csiescseq.arg[0]);
 		break;
 	case 'B': /* CUD -- Cursor <n> Down */
 	case 'e': /* VPR --Cursor <n> Down */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveto(term.c.x, term.c.y+csiescseq.arg[0]);
+		tmoveto(term.c.x, term.c.y + csiescseq.arg[0]);
 		break;
 	case 'i': /* MC -- Media Copy */
-		switch(csiescseq.arg[0]) {
+		switch (csiescseq.arg[0]) {
 		case 0:
 			tdump();
 			break;
@@ -2090,28 +2094,28 @@ csihandle(void) {
 		}
 		break;
 	case 'c': /* DA -- Device Attributes */
-		if(csiescseq.arg[0] == 0)
+		if (csiescseq.arg[0] == 0)
 			ttywrite(vtiden, sizeof(vtiden) - 1);
 		break;
 	case 'C': /* CUF -- Cursor <n> Forward */
 	case 'a': /* HPR -- Cursor <n> Forward */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveto(term.c.x+csiescseq.arg[0], term.c.y);
+		tmoveto(term.c.x + csiescseq.arg[0], term.c.y);
 		break;
 	case 'D': /* CUB -- Cursor <n> Backward */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveto(term.c.x-csiescseq.arg[0], term.c.y);
+		tmoveto(term.c.x - csiescseq.arg[0], term.c.y);
 		break;
 	case 'E': /* CNL -- Cursor <n> Down and first col */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveto(0, term.c.y+csiescseq.arg[0]);
+		tmoveto(0, term.c.y + csiescseq.arg[0]);
 		break;
 	case 'F': /* CPL -- Cursor <n> Up and first col */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveto(0, term.c.y-csiescseq.arg[0]);
+		tmoveto(0, term.c.y - csiescseq.arg[0]);
 		break;
 	case 'g': /* TBC -- Tabulation clear */
-		switch(csiescseq.arg[0]) {
+		switch (csiescseq.arg[0]) {
 		case 0: /* clear current tab stop */
 			term.tabs[term.c.x] = 0;
 			break;
@@ -2125,13 +2129,13 @@ csihandle(void) {
 	case 'G': /* CHA -- Move to <col> */
 	case '`': /* HPA */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveto(csiescseq.arg[0]-1, term.c.y);
+		tmoveto(csiescseq.arg[0] - 1, term.c.y);
 		break;
 	case 'H': /* CUP -- Move to <row> <col> */
 	case 'f': /* HVP */
 		DEFAULT(csiescseq.arg[0], 1);
 		DEFAULT(csiescseq.arg[1], 1);
-		tmoveato(csiescseq.arg[1]-1, csiescseq.arg[0]-1);
+		tmoveato(csiescseq.arg[1] - 1, csiescseq.arg[0] - 1);
 		break;
 	case 'I': /* CHT -- Cursor Forward Tabulation <n> tab stops */
 		DEFAULT(csiescseq.arg[0], 1);
@@ -2139,37 +2143,35 @@ csihandle(void) {
 		break;
 	case 'J': /* ED -- Clear screen */
 		selclear(NULL);
-		switch(csiescseq.arg[0]) {
+		switch (csiescseq.arg[0]) {
 		case 0: /* below */
-			tclearregion(term.c.x, term.c.y, term.col-1, term.c.y);
-			if(term.c.y < term.row-1) {
-				tclearregion(0, term.c.y+1, term.col-1,
-						term.row-1);
+			tclearregion(term.c.x, term.c.y, term.col - 1, term.c.y);
+			if (term.c.y < term.row - 1) {
+				tclearregion(0, term.c.y + 1, term.col - 1, term.row - 1);
 			}
 			break;
 		case 1: /* above */
-			if(term.c.y > 1)
-				tclearregion(0, 0, term.col-1, term.c.y-1);
+			if (term.c.y > 1)
+				tclearregion(0, 0, term.col - 1, term.c.y - 1);
 			tclearregion(0, term.c.y, term.c.x, term.c.y);
 			break;
 		case 2: /* all */
-			tclearregion(0, 0, term.col-1, term.row-1);
+			tclearregion(0, 0, term.col - 1, term.row - 1);
 			break;
 		default:
 			goto unknown;
 		}
 		break;
 	case 'K': /* EL -- Clear line */
-		switch(csiescseq.arg[0]) {
+		switch (csiescseq.arg[0]) {
 		case 0: /* right */
-			tclearregion(term.c.x, term.c.y, term.col-1,
-					term.c.y);
+			tclearregion(term.c.x, term.c.y, term.col - 1, term.c.y);
 			break;
 		case 1: /* left */
 			tclearregion(0, term.c.y, term.c.x, term.c.y);
 			break;
 		case 2: /* all */
-			tclearregion(0, term.c.y, term.col-1, term.c.y);
+			tclearregion(0, term.c.y, term.col - 1, term.c.y);
 			break;
 		}
 		break;
@@ -2195,7 +2197,7 @@ csihandle(void) {
 	case 'X': /* ECH -- Erase <n> char */
 		DEFAULT(csiescseq.arg[0], 1);
 		tclearregion(term.c.x, term.c.y,
-				term.c.x + csiescseq.arg[0] - 1, term.c.y);
+		             term.c.x + csiescseq.arg[0] - 1, term.c.y);
 		break;
 	case 'P': /* DCH -- Delete <n> char */
 		DEFAULT(csiescseq.arg[0], 1);
@@ -2207,7 +2209,7 @@ csihandle(void) {
 		break;
 	case 'd': /* VPA -- Move to <row> */
 		DEFAULT(csiescseq.arg[0], 1);
-		tmoveato(term.c.x, csiescseq.arg[0]-1);
+		tmoveato(term.c.x, csiescseq.arg[0] - 1);
 		break;
 	case 'h': /* SM -- Set terminal mode */
 		tsetmode(csiescseq.priv, 1, csiescseq.arg, csiescseq.narg);
@@ -2218,17 +2220,17 @@ csihandle(void) {
 	case 'n': /* DSR – Device Status Report (cursor position) */
 		if (csiescseq.arg[0] == 6) {
 			len = snprintf(buf, sizeof(buf),"\033[%i;%iR",
-					term.c.y+1, term.c.x+1);
+			               term.c.y + 1, term.c.x + 1);
 			ttywrite(buf, len);
 		}
 		break;
 	case 'r': /* DECSTBM -- Set Scrolling Region */
-		if(csiescseq.priv) {
+		if (csiescseq.priv) {
 			goto unknown;
 		} else {
 			DEFAULT(csiescseq.arg[0], 1);
 			DEFAULT(csiescseq.arg[1], term.row);
-			tsetscroll(csiescseq.arg[0]-1, csiescseq.arg[1]-1);
+			tsetscroll(csiescseq.arg[0] - 1, csiescseq.arg[1] - 1);
 			tmoveato(0, 0);
 		}
 		break;
@@ -2256,19 +2258,19 @@ csihandle(void) {
 
 void
 csidump(void) {
-	int i;
 	uint c;
+	int i;
 
 	printf("ESC[");
-	for(i = 0; i < csiescseq.len; i++) {
+	for (i = 0; i < csiescseq.len; i++) {
 		c = csiescseq.buf[i] & 0xff;
-		if(isprint(c)) {
+		if (isprint(c)) {
 			putchar(c);
-		} else if(c == '\n') {
+		} else if (c == '\n') {
 			printf("(\\n)");
-		} else if(c == '\r') {
+		} else if (c == '\r') {
 			printf("(\\r)");
-		} else if(c == 0x1b) {
+		} else if (c == 0x1b) {
 			printf("(\\e)");
 		} else {
 			printf("(%02x)", c);
@@ -2284,30 +2286,30 @@ csireset(void) {
 
 void
 strhandle(void) {
-	char *p = NULL;
 	int j, narg, par;
+	char *p = NULL;
 
 	term.esc &= ~(ESC_STR_END|ESC_STR);
 	strparse();
 	par = (narg = strescseq.narg) ? atoi(strescseq.args[0]) : 0;
 
-	switch(strescseq.type) {
+	switch (strescseq.type) {
 	case ']': /* OSC -- Operating System Command */
-		switch(par) {
+		switch (par) {
 		case 0:
 		case 1:
 		case 2:
-			if(narg > 1)
+			if (narg > 1)
 				xsettitle(strescseq.args[1]);
 			return;
 		case 4: /* color set */
-			if(narg < 3)
+			if (narg < 3)
 				break;
 			p = strescseq.args[2];
 			/* FALLTHROUGH */
 		case 104: /* color reset, here p = NULL */
 			j = (narg > 1) ? atoi(strescseq.args[1]) : -1;
-			if(xsetcolorname(j, p)) {
+			if (xsetcolorname(j, p)) {
 				fprintf(stderr, "erresc: invalid color %s\n", p);
 			} else {
 				/*
@@ -2340,14 +2342,14 @@ strparse(void) {
 	strescseq.narg = 0;
 	strescseq.buf[strescseq.len] = '\0';
 
-	if(*p == '\0')
+	if (*p == '\0')
 		return;
 
-	while(strescseq.narg < STR_ARG_SIZ) {
+	while (strescseq.narg < STR_ARG_SIZ) {
 		strescseq.args[strescseq.narg++] = p;
-		while((c = *p) != ';' && c != '\0')
+		while ((c = *p) != ';' && c != '\0')
 			++p;
-		if(c == '\0')
+		if (c == '\0')
 			return;
 		*p++ = '\0';
 	}
@@ -2355,21 +2357,21 @@ strparse(void) {
 
 void
 strdump(void) {
-	int i;
 	uint c;
+	int i;
 
 	printf("ESC%c", strescseq.type);
-	for(i = 0; i < strescseq.len; i++) {
+	for (i = 0; i < strescseq.len; i++) {
 		c = strescseq.buf[i] & 0xff;
-		if(c == '\0') {
+		if (c == '\0') {
 			return;
-		} else if(isprint(c)) {
+		} else if (isprint(c)) {
 			putchar(c);
-		} else if(c == '\n') {
+		} else if (c == '\n') {
 			printf("(\\n)");
-		} else if(c == '\r') {
+		} else if (c == '\r') {
 			printf("(\\r)");
-		} else if(c == 0x1b) {
+		} else if (c == 0x1b) {
 			printf("(\\e)");
 		} else {
 			printf("(%02x)", c);
@@ -2385,9 +2387,9 @@ strreset(void) {
 
 void
 tprinter(char *s, size_t len) {
-	if(iofd != -1 && xwrite(iofd, s, len) < 0) {
+	if (iofd != -1 && xwrite(iofd, s, len) < 0) {
 		fprintf(stderr, "Error writing in %s:%s\n",
-			opt_io, strerror(errno));
+		        opt_io, strerror(errno));
 		close(iofd);
 		iofd = -1;
 	}
@@ -2412,7 +2414,7 @@ void
 tdumpsel(void) {
 	char *ptr;
 
-	if((ptr = getsel())) {
+	if ((ptr = getsel())) {
 		tprinter(ptr, strlen(ptr));
 		free(ptr);
 	}
@@ -2420,13 +2422,13 @@ tdumpsel(void) {
 
 void
 tdumpline(int n) {
-	char buf[UTF_SIZ];
 	Glyph *bp, *end;
+	char buf[UTF_SIZ];
 
 	bp = &term.line[n][0];
 	end = &bp[MIN(tlinelen(n), term.col) - 1];
-	if(bp != end || bp->u != ' ') {
-		for( ;bp <= end; ++bp)
+	if (bp != end || bp->u != ' ') {
+		for ( ;bp <= end; ++bp)
 			tprinter(buf, utf8encode(bp->u, buf));
 	}
 	tprinter("\n", 1);
@@ -2436,7 +2438,7 @@ void
 tdump(void) {
 	int i;
 
-	for(i = 0; i < term.row; ++i)
+	for (i = 0; i < term.row; ++i)
 		tdumpline(i);
 }
 
@@ -2444,26 +2446,26 @@ void
 tputtab(int n) {
 	uint x = term.c.x;
 
-	if(n > 0) {
-		while(x < term.col && n--)
-			for(++x; x < term.col && !term.tabs[x]; ++x)
-				/* nothing */ ;
-	} else if(n < 0) {
-		while(x > 0 && n++)
-			for(--x; x > 0 && !term.tabs[x]; --x)
-				/* nothing */ ;
+	if (n > 0) {
+		while (x < term.col && n--)
+			for (++x; x < term.col && !term.tabs[x]; ++x)
+				;
+	} else if (n < 0) {
+		while (x > 0 && n++)
+			for (--x; x > 0 && !term.tabs[x]; --x)
+				;
 	}
-	term.c.x = LIMIT(x, 0, term.col-1);
+	term.c.x = LIMIT(x, 0, term.col - 1);
 }
 
 void
 techo(Rune u) {
-	if(ISCONTROL(u)) { /* control code */
-		if(u & 0x80) {
+	if (ISCONTROL(u)) { /* control code */
+		if (u & 0x80) {
 			u &= 0x7f;
 			tputc('^');
 			tputc('[');
-		} else if(u != '\n' && u != '\r' && u != '\t') {
+		} else if (u != '\n' && u != '\r' && u != '\t') {
 			u ^= 0x40;
 			tputc('^');
 		}
@@ -2473,11 +2475,11 @@ techo(Rune u) {
 
 void
 tdeftran(char ascii) {
+	static int vcs[] = { CS_GRAPHIC0, CS_USA };
 	static char cs[] = "0B";
-	static int vcs[] = {CS_GRAPHIC0, CS_USA};
 	char *p;
 
-	if((p = strchr(cs, ascii)) == NULL) {
+	if (!(p = strchr(cs, ascii))) {
 		fprintf(stderr, "esc unhandled charset: ESC ( %c\n", ascii);
 	} else {
 		term.trantbl[term.icharset] = vcs[p - cs];
@@ -2488,9 +2490,9 @@ void
 tdectest(char c) {
 	int x, y;
 
-	if(c == '8') { /* DEC screen alignment test. */
-		for(x = 0; x < term.col; ++x) {
-			for(y = 0; y < term.row; ++y)
+	if (c == '8') { /* DEC screen alignment test. */
+		for (x = 0; x < term.col; ++x) {
+			for (y = 0; y < term.row; ++y)
 				tsetchar('E', &term.c.attr, x, y);
 		}
 	}
@@ -2519,12 +2521,12 @@ tstrsequence(uchar c) {
 
 void
 tcontrolcode(uchar ascii) {
-	switch(ascii) {
+	switch (ascii) {
 	case '\t':   /* HT */
 		tputtab(1);
 		return;
 	case '\b':   /* BS */
-		tmoveto(term.c.x-1, term.c.y);
+		tmoveto(term.c.x - 1, term.c.y);
 		return;
 	case '\r':   /* CR */
 		tmoveto(0, term.c.y);
@@ -2536,11 +2538,11 @@ tcontrolcode(uchar ascii) {
 		tnewline(IS_SET(MODE_CRLF));
 		return;
 	case '\a':   /* BEL */
-		if(term.esc & ESC_STR_END) {
+		if (term.esc & ESC_STR_END) {
 			/* backwards compatibility to xterm */
 			strhandle();
 		} else {
-			if(!(xw.state & WIN_FOCUSED))
+			if (!(xw.state & WIN_FOCUSED))
 				xseturgency(1);
 			if (bellvolume)
 				XkbBell(xw.dpy, xw.win, bellvolume, (Atom)NULL);
@@ -2602,7 +2604,7 @@ tcontrolcode(uchar ascii) {
  */
 int
 eschandle(uchar ascii) {
-	switch(ascii) {
+	switch (ascii) {
 	case '[':
 		term.esc |= ESC_CSI;
 		return 0;
@@ -2628,10 +2630,10 @@ eschandle(uchar ascii) {
 		term.esc |= ESC_ALTCHARSET;
 		return 0;
 	case 'D': /* IND -- Linefeed */
-		if(term.c.y == term.bot) {
+		if (term.c.y == term.bot) {
 			tscrollup(term.top, 1);
 		} else {
-			tmoveto(term.c.x, term.c.y+1);
+			tmoveto(term.c.x, term.c.y + 1);
 		}
 		break;
 	case 'E': /* NEL -- Next line */
@@ -2641,10 +2643,10 @@ eschandle(uchar ascii) {
 		term.tabs[term.c.x] = 1;
 		break;
 	case 'M': /* RI -- Reverse index */
-		if(term.c.y == term.top) {
+		if (term.c.y == term.top) {
 			tscrolldown(term.top, 1);
 		} else {
-			tmoveto(term.c.x, term.c.y-1);
+			tmoveto(term.c.x, term.c.y - 1);
 		}
 		break;
 	case 'Z': /* DECID -- Identify Terminal */
@@ -2668,7 +2670,7 @@ eschandle(uchar ascii) {
 		tcursor(CURSOR_LOAD);
 		break;
 	case '\\': /* ST -- String Terminator */
-		if(term.esc & ESC_STR_END)
+		if (term.esc & ESC_STR_END)
 			strhandle();
 		break;
 	default:
@@ -2681,18 +2683,18 @@ eschandle(uchar ascii) {
 
 void
 tputc(Rune u) {
-	char c[UTF_SIZ];
+	Glyph *gp;
 	int control;
 	int width, len;
-	Glyph *gp;
+	char c[UTF_SIZ];
 
 	len = utf8encode(u, c);
-	if((width = wcwidth(u)) == -1) {
+	if ((width = wcwidth(u)) == -1) {
 		memcpy(c, "\357\277\275", 4); /* UTF_INVALID */
 		width = 1;
 	}
 
-	if(IS_SET(MODE_PRINT))
+	if (IS_SET(MODE_PRINT))
 		tprinter(c, len);
 	control = ISCONTROL(u);
 
@@ -2702,12 +2704,12 @@ tputc(Rune u) {
 	 * receives a ESC, a SUB, a ST or any other C1 control
 	 * character.
 	 */
-	if(term.esc & ESC_STR) {
-		if(u == '\a' || u == 030 || u == 032 || u == 033 ||
+	if (term.esc & ESC_STR) {
+		if (u == '\a' || u == 030 || u == 032 || u == 033 ||
 		   ISCONTROLC1(u)) {
 			term.esc &= ~(ESC_START|ESC_STR);
 			term.esc |= ESC_STR_END;
-		} else if(strescseq.len + len < sizeof(strescseq.buf) - 1) {
+		} else if (strescseq.len + len < sizeof(strescseq.buf) - 1) {
 			memmove(&strescseq.buf[strescseq.len], c, len);
 			strescseq.len += len;
 			return;
@@ -2734,26 +2736,25 @@ tputc(Rune u) {
 	 * because they can be embedded inside a control sequence, and
 	 * they must not cause conflicts with sequences.
 	 */
-	if(control) {
+	if (control) {
 		tcontrolcode(u);
 		/*
 		 * control codes are not shown ever
 		 */
 		return;
-	} else if(term.esc & ESC_START) {
-		if(term.esc & ESC_CSI) {
+	} else if (term.esc & ESC_START) {
+		if (term.esc & ESC_CSI) {
 			csiescseq.buf[csiescseq.len++] = u;
-			if(BETWEEN(u, 0x40, 0x7E)
-					|| csiescseq.len >= \
-					sizeof(csiescseq.buf)-1) {
+			if (BETWEEN(u, 0x40, 0x7E) ||
+			    csiescseq.len >= sizeof(csiescseq.buf) - 1) {
 				term.esc = 0;
 				csiparse();
 				csihandle();
 			}
 			return;
-		} else if(term.esc & ESC_ALTCHARSET) {
+		} else if (term.esc & ESC_ALTCHARSET) {
 			tdeftran(u);
-		} else if(term.esc & ESC_TEST) {
+		} else if (term.esc & ESC_TEST) {
 			tdectest(u);
 		} else {
 			if (!eschandle(u))
@@ -2767,35 +2768,35 @@ tputc(Rune u) {
 		 */
 		return;
 	}
-	if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
+	if (sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
 		selclear(NULL);
 
 	gp = &term.line[term.c.y][term.c.x];
-	if(IS_SET(MODE_WRAP) && (term.c.state & CURSOR_WRAPNEXT)) {
+	if (IS_SET(MODE_WRAP) && (term.c.state & CURSOR_WRAPNEXT)) {
 		gp->mode |= ATTR_WRAP;
 		tnewline(1);
 		gp = &term.line[term.c.y][term.c.x];
 	}
 
-	if(IS_SET(MODE_INSERT) && term.c.x+width < term.col)
+	if (IS_SET(MODE_INSERT) && term.c.x+width < term.col)
 		memmove(gp+width, gp, (term.col - term.c.x - width) * sizeof(Glyph));
 
-	if(term.c.x+width > term.col) {
+	if (term.c.x+width > term.col) {
 		tnewline(1);
 		gp = &term.line[term.c.y][term.c.x];
 	}
 
 	tsetchar(u, &term.c.attr, term.c.x, term.c.y);
 
-	if(width == 2) {
+	if (width == 2) {
 		gp->mode |= ATTR_WIDE;
-		if(term.c.x+1 < term.col) {
+		if (term.c.x + 1 < term.col) {
 			gp[1].u = '\0';
 			gp[1].mode = ATTR_WDUMMY;
 		}
 	}
-	if(term.c.x+width < term.col) {
-		tmoveto(term.c.x+width, term.c.y);
+	if (term.c.x + width < term.col) {
+		tmoveto(term.c.x + width, term.c.y);
 	} else {
 		term.c.state |= CURSOR_WRAPNEXT;
 	}
@@ -2803,15 +2804,14 @@ tputc(Rune u) {
 
 void
 tresize(int col, int row) {
+	TCursor c;
 	int i;
 	int minrow = MIN(row, term.row);
 	int mincol = MIN(col, term.col);
 	int *bp;
-	TCursor c;
 
-	if(col < 1 || row < 1) {
-		fprintf(stderr,
-		        "tresize: error resizing to %dx%d\n", col, row);
+	if (col < 1 || row < 1) {
+		fprintf(stderr, "tresize: error resizing to %dx%d\n", col, row);
 		return;
 	}
 
@@ -2820,7 +2820,7 @@ tresize(int col, int row) {
 	 * tscrollup would work here, but we can optimize to
 	 * memmove because we're freeing the earlier lines
 	 */
-	for(i = 0; i <= term.c.y - row; i++) {
+	for (i = 0; i <= term.c.y - row; i++) {
 		free(term.line[i]);
 		free(term.alt[i]);
 	}
@@ -2829,7 +2829,7 @@ tresize(int col, int row) {
 		memmove(term.line, term.line + i, row * sizeof(Line));
 		memmove(term.alt, term.alt + i, row * sizeof(Line));
 	}
-	for(i += row; i < term.row; i++) {
+	for (i += row; i < term.row; i++) {
 		free(term.line[i]);
 		free(term.alt[i]);
 	}
@@ -2838,45 +2838,45 @@ tresize(int col, int row) {
 	term.specbuf = xrealloc(term.specbuf, col * sizeof(XftGlyphFontSpec));
 
 	/* resize to new height */
-	term.line = xrealloc(term.line, row * sizeof(Line));
-	term.alt  = xrealloc(term.alt,  row * sizeof(Line));
+	term.line  = xrealloc(term.line,  row * sizeof(Line));
+	term.alt   = xrealloc(term.alt,   row * sizeof(Line));
 	term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty));
-	term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs));
+	term.tabs  = xrealloc(term.tabs,  col * sizeof(*term.tabs));
 
 	/* resize each row to new width, zero-pad if needed */
-	for(i = 0; i < minrow; i++) {
+	for (i = 0; i < minrow; i++) {
 		term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph));
 		term.alt[i]  = xrealloc(term.alt[i],  col * sizeof(Glyph));
 	}
 
 	/* allocate any new rows */
-	for(/* i == minrow */; i < row; i++) {
+	for (/* i == minrow */; i < row; i++) {
 		term.line[i] = xmalloc(col * sizeof(Glyph));
 		term.alt[i] = xmalloc(col * sizeof(Glyph));
 	}
-	if(col > term.col) {
+	if (col > term.col) {
 		bp = term.tabs + term.col;
 
 		memset(bp, 0, sizeof(*term.tabs) * (col - term.col));
-		while(--bp > term.tabs && !*bp)
+		while (--bp > term.tabs && !*bp)
 			/* nothing */ ;
-		for(bp += tabspaces; bp < term.tabs + col; bp += tabspaces)
+		for (bp += tabspaces; bp < term.tabs + col; bp += tabspaces)
 			*bp = 1;
 	}
 	/* update terminal size */
 	term.col = col;
 	term.row = row;
 	/* reset scrolling region */
-	tsetscroll(0, row-1);
+	tsetscroll(0, row - 1);
 	/* make use of the LIMIT in tmoveto */
 	tmoveto(term.c.x, term.c.y);
 	/* Clearing both screens (it makes dirty all lines) */
 	c = term.c;
-	for(i = 0; i < 2; i++) {
-		if(mincol < col && 0 < minrow) {
+	for (i = 0; i < 2; i++) {
+		if (mincol < col && 0 < minrow) {
 			tclearregion(mincol, 0, col - 1, minrow - 1);
 		}
-		if(0 < col && minrow < row) {
+		if (0 < col && minrow < row) {
 			tclearregion(0, minrow, col - 1, row - 1);
 		}
 		tswapscreen();
@@ -2892,52 +2892,52 @@ xresize(int col, int row) {
 
 	XFreePixmap(xw.dpy, xw.buf);
 	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
-			DefaultDepth(xw.dpy, xw.scr));
+	                       DefaultDepth(xw.dpy, xw.scr));
 	XftDrawChange(xw.draw, xw.buf);
 	xclear(0, 0, xw.w, xw.h);
 }
 
 ushort
 sixd_to_16bit(int x) {
-	return x == 0 ? 0 : 0x3737 + 0x2828 * x;
+	return x ? 0x3737 + 0x2828 * x : 0;
 }
 
 int
 xloadcolor(int i, const char *name, Color *ncolor) {
 	XRenderColor color = { .alpha = 0xffff };
 
-	if(!name) {
-		if(BETWEEN(i, 16, 255)) { /* 256 color */
-			if(i < 6*6*6+16) { /* same colors as xterm */
-				color.red   = sixd_to_16bit( ((i-16)/36)%6 );
-				color.green = sixd_to_16bit( ((i-16)/6) %6 );
-				color.blue  = sixd_to_16bit( ((i-16)/1) %6 );
+	if (!name) {
+		if (BETWEEN(i, 16, 255)) { /* 256 color */
+			if (i < 6 * 6 * 6 + 16) { /* same colors as xterm */
+				color.red   = sixd_to_16bit( ((i - 16) / 36) % 6 );
+				color.green = sixd_to_16bit( ((i - 16) / 6)  % 6 );
+				color.blue  = sixd_to_16bit( ((i - 16) / 1)  % 6 );
 			} else { /* greyscale */
-				color.red = 0x0808 + 0x0a0a * (i - (6*6*6+16));
+				color.red = 0x0808 + 0x0a0a * (i - (6 * 6 * 6 + 16));
 				color.green = color.blue = color.red;
 			}
-			return XftColorAllocValue(xw.dpy, xw.vis,
-			                          xw.cmap, &color, ncolor);
+			return XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, ncolor);
 		} else
 			name = colorname[i];
 	}
+
 	return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor);
 }
 
 void
 xloadcols(void) {
+	Color *cp;
 	int i;
 	static int loaded;
-	Color *cp;
 
-	if(loaded) {
+	if (loaded) {
 		for (cp = dc.col; cp < &dc.col[LEN(dc.col)]; ++cp)
 			XftColorFree(xw.dpy, xw.vis, xw.cmap, cp);
 	}
 
-	for(i = 0; i < LEN(dc.col); i++)
-		if(!xloadcolor(i, NULL, &dc.col[i])) {
-			if(colorname[i])
+	for (i = 0; i < LEN(dc.col); i++)
+		if (!xloadcolor(i, NULL, &dc.col[i])) {
+			if (colorname[i])
 				die("Could not allocate color '%s'\n", colorname[i]);
 			else
 				die("Could not allocate color %d\n", i);
@@ -2949,26 +2949,24 @@ int
 xsetcolorname(int x, const char *name) {
 	Color ncolor;
 
-	if(!BETWEEN(x, 0, LEN(dc.col)))
+	if (!BETWEEN(x, 0, LEN(dc.col)))
 		return 1;
 
 
-	if(!xloadcolor(x, name, &ncolor))
+	if (!xloadcolor(x, name, &ncolor))
 		return 1;
 
 	XftColorFree(xw.dpy, xw.vis, xw.cmap, &dc.col[x]);
 	dc.col[x] = ncolor;
+
 	return 0;
 }
 
 void
 xtermclear(int col1, int row1, int col2, int row2) {
-	XftDrawRect(xw.draw,
-			&dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg],
-			borderpx + col1 * xw.cw,
-			borderpx + row1 * xw.ch,
-			(col2-col1+1) * xw.cw,
-			(row2-row1+1) * xw.ch);
+	XftDrawRect(xw.draw, &dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg],
+	            borderpx + col1 * xw.cw, borderpx + row1 * xw.ch,
+	            (col2 - col1 + 1) * xw.cw, (row2 - row1 + 1) * xw.ch);
 }
 
 /*
@@ -2976,46 +2974,44 @@ xtermclear(int col1, int row1, int col2, int row2) {
  */
 void
 xclear(int x1, int y1, int x2, int y2) {
-	XftDrawRect(xw.draw,
-			&dc.col[IS_SET(MODE_REVERSE)? defaultfg : defaultbg],
-			x1, y1, x2-x1, y2-y1);
+	XftDrawRect(xw.draw, &dc.col[IS_SET(MODE_REVERSE)? defaultfg : defaultbg],
+	            x1, y1, x2 - x1, y2 - y1);
 }
 
 void
 xhints(void) {
-	XClassHint class = {opt_class ? opt_class : termname, termname};
-	XWMHints wm = {.flags = InputHint, .input = 1};
+	XClassHint class = { opt_class ? opt_class : termname, termname };
 	XSizeHints *sizeh = NULL;
+	XWMHints wm = { .flags = InputHint, .input = 1 };
 
 	sizeh = XAllocSizeHints();
 
-	sizeh->flags = PSize | PResizeInc | PBaseSize;
-	sizeh->height = xw.h;
-	sizeh->width = xw.w;
-	sizeh->height_inc = xw.ch;
-	sizeh->width_inc = xw.cw;
+	sizeh->flags       = PSize | PResizeInc | PBaseSize;
+	sizeh->height      = xw.h;
+	sizeh->width       = xw.w;
+	sizeh->height_inc  = xw.ch;
+	sizeh->width_inc   = xw.cw;
 	sizeh->base_height = 2 * borderpx;
-	sizeh->base_width = 2 * borderpx;
-	if(xw.isfixed == True) {
-		sizeh->flags |= PMaxSize | PMinSize;
-		sizeh->min_width = sizeh->max_width = xw.w;
+	sizeh->base_width  = 2 * borderpx;
+	if (xw.isfixed) {
+		sizeh->flags     |= PMaxSize | PMinSize;
+		sizeh->min_width  = sizeh->max_width = xw.w;
 		sizeh->min_height = sizeh->max_height = xw.h;
 	}
-	if(xw.gm & (XValue|YValue)) {
-		sizeh->flags |= USPosition | PWinGravity;
-		sizeh->x = xw.l;
-		sizeh->y = xw.t;
+	if (xw.gm & (XValue|YValue)) {
+		sizeh->flags      |= USPosition | PWinGravity;
+		sizeh->x           = xw.l;
+		sizeh->y           = xw.t;
 		sizeh->win_gravity = xgeommasktogravity(xw.gm);
 	}
 
-	XSetWMProperties(xw.dpy, xw.win, NULL, NULL, NULL, 0, sizeh, &wm,
-			&class);
+	XSetWMProperties(xw.dpy, xw.win, NULL, NULL, NULL, 0, sizeh, &wm, &class);
 	XFree(sizeh);
 }
 
 int
 xgeommasktogravity(int mask) {
-	switch(mask & (XNegative|YNegative)) {
+	switch (mask & (XNegative | YNegative)) {
 	case 0:
 		return NorthWestGravity;
 	case XNegative:
@@ -3023,6 +3019,7 @@ xgeommasktogravity(int mask) {
 	case YNegative:
 		return SouthWestGravity;
 	}
+
 	return SouthEastGravity;
 }
 
@@ -3032,24 +3029,24 @@ xloadfont(Font *f, FcPattern *pattern) {
 	FcResult result;
 
 	match = FcFontMatch(NULL, pattern, &result);
-	if(!match)
+	if (!match)
 		return 1;
 
-	if(!(f->match = XftFontOpenPattern(xw.dpy, match))) {
+	if (!(f->match = XftFontOpenPattern(xw.dpy, match))) {
 		FcPatternDestroy(match);
 		return 1;
 	}
 
-	f->set = NULL;
+	f->set     = NULL;
 	f->pattern = FcPatternDuplicate(pattern);
 
-	f->ascent = f->match->ascent;
-	f->descent = f->match->descent;
+	f->ascent   = f->match->ascent;
+	f->descent  = f->match->descent;
 	f->lbearing = 0;
 	f->rbearing = f->match->max_advance_width;
 
 	f->height = f->ascent + f->descent;
-	f->width = f->lbearing + f->rbearing;
+	f->width  = f->lbearing + f->rbearing;
 
 	return 0;
 }
@@ -3060,26 +3057,26 @@ xloadfonts(char *fontstr, double fontsize) {
 	double fontval;
 	float ceilf(float);
 
-	if(fontstr[0] == '-') {
-		pattern = XftXlfdParse(fontstr, False, False);
+	if (fontstr[0] == '-') {
+		pattern = XftXlfdParse(fontstr, 0, 0);
 	} else {
 		pattern = FcNameParse((FcChar8 *)fontstr);
 	}
 
-	if(!pattern)
+	if (!pattern)
 		die("st: can't open font %s\n", fontstr);
 
-	if(fontsize > 1) {
+	if (fontsize > 1) {
 		FcPatternDel(pattern, FC_PIXEL_SIZE);
 		FcPatternDel(pattern, FC_SIZE);
 		FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)fontsize);
 		usedfontsize = fontsize;
 	} else {
-		if(FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval) ==
-				FcResultMatch) {
+		if (FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval) ==
+		    FcResultMatch) {
 			usedfontsize = fontval;
-		} else if(FcPatternGetDouble(pattern, FC_SIZE, 0, &fontval) ==
-				FcResultMatch) {
+		} else if (FcPatternGetDouble(pattern, FC_SIZE, 0, &fontval) ==
+		           FcResultMatch) {
 			usedfontsize = -1;
 		} else {
 			/*
@@ -3095,14 +3092,14 @@ xloadfonts(char *fontstr, double fontsize) {
 	FcConfigSubstitute(0, pattern, FcMatchPattern);
 	FcDefaultSubstitute(pattern);
 
-	if(xloadfont(&dc.font, pattern))
+	if (xloadfont(&dc.font, pattern))
 		die("st: can't open font %s\n", fontstr);
 
-	if(usedfontsize < 0) {
+	if (usedfontsize < 0) {
 		FcPatternGetDouble(dc.font.match->pattern,
 		                   FC_PIXEL_SIZE, 0, &fontval);
 		usedfontsize = fontval;
-		if(fontsize == 0)
+		if (fontsize == 0)
 			defaultfontsize = fontval;
 	}
 
@@ -3112,17 +3109,17 @@ xloadfonts(char *fontstr, double fontsize) {
 
 	FcPatternDel(pattern, FC_SLANT);
 	FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC);
-	if(xloadfont(&dc.ifont, pattern))
+	if (xloadfont(&dc.ifont, pattern))
 		die("st: can't open font %s\n", fontstr);
 
 	FcPatternDel(pattern, FC_WEIGHT);
 	FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD);
-	if(xloadfont(&dc.ibfont, pattern))
+	if (xloadfont(&dc.ibfont, pattern))
 		die("st: can't open font %s\n", fontstr);
 
 	FcPatternDel(pattern, FC_SLANT);
 	FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN);
-	if(xloadfont(&dc.bfont, pattern))
+	if (xloadfont(&dc.bfont, pattern))
 		die("st: can't open font %s\n", fontstr);
 
 	FcPatternDestroy(pattern);
@@ -3132,14 +3129,14 @@ void
 xunloadfont(Font *f) {
 	XftFontClose(xw.dpy, f->match);
 	FcPatternDestroy(f->pattern);
-	if(f->set)
+	if (f->set)
 		FcFontSetDestroy(f->set);
 }
 
 void
 xunloadfonts(void) {
 	/* Free the loaded fonts in the font cache.  */
-	while(frclen > 0)
+	while (frclen > 0)
 		XftFontClose(xw.dpy, frc[--frclen].font);
 
 	xunloadfont(&dc.font);
@@ -3169,7 +3166,7 @@ void
 xzoomreset(const Arg *arg) {
 	Arg larg;
 
-	if(defaultfontsize > 0) {
+	if (defaultfontsize > 0) {
 		larg.f = defaultfontsize;
 		xzoomabs(&larg);
 	}
@@ -3177,21 +3174,21 @@ xzoomreset(const Arg *arg) {
 
 void
 xinit(void) {
-	XGCValues gcvalues;
+	pid_t thispid = getpid();
 	Cursor cursor;
 	Window parent;
-	pid_t thispid = getpid();
+	XGCValues gcvalues;
 
-	if(!(xw.dpy = XOpenDisplay(NULL)))
+	if (!(xw.dpy = XOpenDisplay(NULL)))
 		die("Can't open display\n");
 	xw.scr = XDefaultScreen(xw.dpy);
 	xw.vis = XDefaultVisual(xw.dpy, xw.scr);
 
 	/* font */
-	if(!FcInit())
+	if (!FcInit())
 		die("Could not init fontconfig.\n");
 
-	usedfont = (opt_font == NULL)? font : opt_font;
+	usedfont = opt_font ? opt_font : font;
 	xloadfonts(usedfont, 0);
 
 	/* colors */
@@ -3201,33 +3198,32 @@ xinit(void) {
 	/* adjust fixed window geometry */
 	xw.w = 2 * borderpx + term.col * xw.cw;
 	xw.h = 2 * borderpx + term.row * xw.ch;
-	if(xw.gm & XNegative)
+	if (xw.gm & XNegative)
 		xw.l += DisplayWidth(xw.dpy, xw.scr) - xw.w - 2;
-	if(xw.gm & YNegative)
+	if (xw.gm & YNegative)
 		xw.t += DisplayWidth(xw.dpy, xw.scr) - xw.h - 2;
 
 	/* Events */
 	xw.attrs.background_pixel = dc.col[defaultbg].pixel;
 	xw.attrs.border_pixel = dc.col[defaultbg].pixel;
 	xw.attrs.bit_gravity = NorthWestGravity;
-	xw.attrs.event_mask = FocusChangeMask | KeyPressMask
-		| ExposureMask | VisibilityChangeMask | StructureNotifyMask
-		| ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;
+	xw.attrs.event_mask = FocusChangeMask | KeyPressMask | ExposureMask |
+	                      VisibilityChangeMask | StructureNotifyMask |
+	                      ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;
 	xw.attrs.colormap = xw.cmap;
 
 	if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0))))
 		parent = XRootWindow(xw.dpy, xw.scr);
 	xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t,
-			xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput,
-			xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity
-			| CWEventMask | CWColormap, &xw.attrs);
+	                       xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput,
+	                       xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity |
+	                       CWEventMask | CWColormap, &xw.attrs);
 
 	memset(&gcvalues, 0, sizeof(gcvalues));
-	gcvalues.graphics_exposures = False;
-	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
-			&gcvalues);
+	gcvalues.graphics_exposures = 0;
+	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, &gcvalues);
 	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
-			DefaultDepth(xw.dpy, xw.scr));
+	                       DefaultDepth(xw.dpy, xw.scr));
 	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
 
@@ -3235,83 +3231,80 @@ xinit(void) {
 	xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap);
 
 	/* input methods */
-	if((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) {
+	if (!(xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL))) {
 		XSetLocaleModifiers("@im=local");
-		if((xw.xim =  XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) {
+		if (!(xw.xim =  XOpenIM(xw.dpy, NULL, NULL, NULL))) {
 			XSetLocaleModifiers("@im=");
-			if((xw.xim = XOpenIM(xw.dpy,
-					NULL, NULL, NULL)) == NULL) {
-				die("XOpenIM failed. Could not open input"
-					" device.\n");
+			if (!(xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL))) {
+				die("XOpenIM failed. Could not open input device.\n");
 			}
 		}
 	}
-	xw.xic = XCreateIC(xw.xim, XNInputStyle, XIMPreeditNothing
-					   | XIMStatusNothing, XNClientWindow, xw.win,
-					   XNFocusWindow, xw.win, NULL);
-	if(xw.xic == NULL)
+	xw.xic = XCreateIC(xw.xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
+	                   XNClientWindow, xw.win, XNFocusWindow, xw.win, NULL);
+	if (!xw.xic)
 		die("XCreateIC failed. Could not obtain input method.\n");
 
 	/* white cursor, black outline */
 	cursor = XCreateFontCursor(xw.dpy, XC_xterm);
 	XDefineCursor(xw.dpy, xw.win, cursor);
 	XRecolorCursor(xw.dpy, cursor,
-		&(XColor){.red = 0xffff, .green = 0xffff, .blue = 0xffff},
-		&(XColor){.red = 0x0000, .green = 0x0000, .blue = 0x0000});
+		&(XColor){ .red = 0xffff, .green = 0xffff, .blue = 0xffff },
+		&(XColor){ .red = 0x0000, .green = 0x0000, .blue = 0x0000 });
 
-	xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
-	xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
-	xw.netwmname = XInternAtom(xw.dpy, "_NET_WM_NAME", False);
+	xw.xembed      = XInternAtom(xw.dpy, "_XEMBED", 0);
+	xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", 0);
+	xw.netwmname   = XInternAtom(xw.dpy, "_NET_WM_NAME", 0);
 	XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1);
 
-	xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", False);
+	xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", 0);
 	XChangeProperty(xw.dpy, xw.win, xw.netwmpid, XA_CARDINAL, 32,
-			PropModeReplace, (uchar *)&thispid, 1);
+	                PropModeReplace, (uchar *)&thispid, 1);
 
 	xresettitle();
 	XMapWindow(xw.dpy, xw.win);
 	xhints();
-	XSync(xw.dpy, False);
+	XSync(xw.dpy, 0);
 }
 
 int
 xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y)
 {
-	float winx = borderpx + x * xw.cw, winy = borderpx + y * xw.ch, xp, yp;
-	ushort mode, prevmode = USHRT_MAX;
 	Font *font = &dc.font;
-	int frcflags = FRC_NORMAL;
-	float runewidth = xw.cw;
 	Rune rune;
 	FT_UInt glyphidx;
-	FcResult fcres;
-	FcPattern *fcpattern, *fontpattern;
-	FcFontSet *fcsets[] = { NULL };
 	FcCharSet *fccharset;
+	FcFontSet *fcsets[] = { NULL };
+	FcPattern *fcpattern, *fontpattern;
+	FcResult fcres;
+	ushort mode, prevmode = USHRT_MAX;
+	int frcflags = FRC_NORMAL;
 	int i, f, numspecs = 0;
+	float winx = borderpx + x * xw.cw, winy = borderpx + y * xw.ch, xp, yp;
+	float runewidth = xw.cw;
 
-	for(i = 0, xp = winx, yp = winy + font->ascent; i < len; ++i) {
+	for (i = 0, xp = winx, yp = winy + font->ascent; i < len; ++i) {
 		/* Fetch rune and mode for current glyph. */
 		rune = glyphs[i].u;
 		mode = glyphs[i].mode;
 
 		/* Skip dummy wide-character spacing. */
-		if(mode == ATTR_WDUMMY)
+		if (mode == ATTR_WDUMMY)
 			continue;
 
 		/* Determine font for glyph if different from previous glyph. */
-		if(prevmode != mode) {
+		if (prevmode != mode) {
 			prevmode = mode;
 			font = &dc.font;
 			frcflags = FRC_NORMAL;
 			runewidth = xw.cw * ((mode & ATTR_WIDE) ? 2.0f : 1.0f);
-			if((mode & ATTR_ITALIC) && (mode & ATTR_BOLD)) {
+			if ((mode & ATTR_ITALIC) && (mode & ATTR_BOLD)) {
 				font = &dc.ibfont;
 				frcflags = FRC_ITALICBOLD;
-			} else if(mode & ATTR_ITALIC) {
+			} else if (mode & ATTR_ITALIC) {
 				font = &dc.ifont;
 				frcflags = FRC_ITALIC;
-			} else if(mode & ATTR_BOLD) {
+			} else if (mode & ATTR_BOLD) {
 				font = &dc.bfont;
 				frcflags = FRC_BOLD;
 			}
@@ -3320,7 +3313,7 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
 
 		/* Lookup character index with default font. */
 		glyphidx = XftCharIndex(xw.dpy, font->match, rune);
-		if(glyphidx) {
+		if (glyphidx) {
 			specs[numspecs].font = font->match;
 			specs[numspecs].glyph = glyphidx;
 			specs[numspecs].x = (short)xp;
@@ -3331,23 +3324,23 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
 		}
 
 		/* Fallback on font cache, search the font cache for match. */
-		for(f = 0; f < frclen; f++) {
+		for (f = 0; f < frclen; f++) {
 			glyphidx = XftCharIndex(xw.dpy, frc[f].font, rune);
 			/* Everything correct. */
-			if(glyphidx && frc[f].flags == frcflags)
+			if (glyphidx && frc[f].flags == frcflags)
 				break;
 			/* We got a default font for a not found glyph. */
-			if(!glyphidx && frc[f].flags == frcflags
-					&& frc[f].unicodep == rune) {
+			if (!glyphidx && (frc[f].flags == frcflags) &&
+			    (frc[f].unicodep == rune)) {
 				break;
 			}
 		}
 
 		/* Nothing was found. Use fontconfig to find matching font. */
-		if(f >= frclen) {
-			if(!font->set)
+		if (f >= frclen) {
+			if (!font->set)
 				font->set = FcFontSort(0, font->pattern,
-				                       FcTrue, 0, &fcres);
+				                       1, 0, &fcres);
 			fcsets[0] = font->set;
 
 			/*
@@ -3361,30 +3354,25 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
 			fccharset = FcCharSetCreate();
 
 			FcCharSetAddChar(fccharset, rune);
-			FcPatternAddCharSet(fcpattern, FC_CHARSET,
-					fccharset);
-			FcPatternAddBool(fcpattern, FC_SCALABLE,
-					FcTrue);
+			FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
+			FcPatternAddBool(fcpattern, FC_SCALABLE, 1);
 
-			FcConfigSubstitute(0, fcpattern,
-					FcMatchPattern);
+			FcConfigSubstitute(0, fcpattern, FcMatchPattern);
 			FcDefaultSubstitute(fcpattern);
 
-			fontpattern = FcFontSetMatch(0, fcsets, 1,
-					fcpattern, &fcres);
+			fontpattern = FcFontSetMatch(0, fcsets, 1, fcpattern, &fcres);
 
 			/*
 			 * Overwrite or create the new cache entry.
 			 */
-			if(frclen >= LEN(frc)) {
+			if (frclen >= LEN(frc)) {
 				frclen = LEN(frc) - 1;
 				XftFontClose(xw.dpy, frc[frclen].font);
 				frc[frclen].unicodep = 0;
 			}
 
-			frc[frclen].font = XftFontOpenPattern(xw.dpy,
-					fontpattern);
-			frc[frclen].flags = frcflags;
+			frc[frclen].font     = XftFontOpenPattern(xw.dpy, fontpattern);
+			frc[frclen].flags    = frcflags;
 			frc[frclen].unicodep = rune;
 
 			glyphidx = XftCharIndex(xw.dpy, frc[frclen].font, rune);
@@ -3396,10 +3384,10 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
 			FcCharSetDestroy(fccharset);
 		}
 
-		specs[numspecs].font = frc[f].font;
+		specs[numspecs].font  = frc[f].font;
 		specs[numspecs].glyph = glyphidx;
-		specs[numspecs].x = (short)xp;
-		specs[numspecs].y = (short)(winy + frc[f].font->ascent);
+		specs[numspecs].x     = (short)xp;
+		specs[numspecs].y     = (short)(winy + frc[f].font->ascent);
 		xp += runewidth;
 		numspecs++;
 	}
@@ -3409,39 +3397,39 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
 
 void
 xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y) {
+	Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
+	XRectangle r;
+	XRenderColor colfg, colbg;
 	int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1);
 	int winx = borderpx + x * xw.cw, winy = borderpx + y * xw.ch,
 	    width = charlen * xw.cw;
-	Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
-	XRenderColor colfg, colbg;
-	XRectangle r;
 
 	/* Determine foreground and background colors based on mode. */
-	if(base.fg == defaultfg) {
-		if(base.mode & ATTR_ITALIC)
+	if (base.fg == defaultfg) {
+		if (base.mode & ATTR_ITALIC)
 			base.fg = defaultitalic;
-		else if((base.mode & ATTR_ITALIC) && (base.mode & ATTR_BOLD))
+		else if ((base.mode & ATTR_ITALIC) && (base.mode & ATTR_BOLD))
 			base.fg = defaultitalic;
-		else if(base.mode & ATTR_UNDERLINE)
+		else if (base.mode & ATTR_UNDERLINE)
 			base.fg = defaultunderline;
 	}
 
-	if(IS_TRUECOL(base.fg)) {
-		colfg.alpha = 0xffff;
-		colfg.red = TRUERED(base.fg);
+	if (IS_TRUECOL(base.fg)) {
+		colfg.red   = TRUERED(base.fg);
 		colfg.green = TRUEGREEN(base.fg);
-		colfg.blue = TRUEBLUE(base.fg);
+		colfg.blue  = TRUEBLUE(base.fg);
+		colfg.alpha = 0xffff;
 		XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &truefg);
 		fg = &truefg;
 	} else {
 		fg = &dc.col[base.fg];
 	}
 
-	if(IS_TRUECOL(base.bg)) {
-		colbg.alpha = 0xffff;
+	if (IS_TRUECOL(base.bg)) {
+		colbg.red   = TRUERED(base.bg);
 		colbg.green = TRUEGREEN(base.bg);
-		colbg.red = TRUERED(base.bg);
-		colbg.blue = TRUEBLUE(base.bg);
+		colbg.blue  = TRUEBLUE(base.bg);
+		colbg.alpha = 0xffff;
 		XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg, &truebg);
 		bg = &truebg;
 	} else {
@@ -3449,91 +3437,87 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
 	}
 
 	/* Change basic system colors [0-7] to bright system colors [8-15] */
-	if((base.mode & ATTR_BOLD_FAINT) == ATTR_BOLD && BETWEEN(base.fg, 0, 7))
+	if ((base.mode & ATTR_BOLD_FAINT) == ATTR_BOLD && BETWEEN(base.fg, 0, 7))
 		fg = &dc.col[base.fg + 8];
 
-	if(IS_SET(MODE_REVERSE)) {
-		if(fg == &dc.col[defaultfg]) {
+	if (IS_SET(MODE_REVERSE)) {
+		if (fg == &dc.col[defaultfg]) {
 			fg = &dc.col[defaultbg];
 		} else {
-			colfg.red = ~fg->color.red;
+			colfg.red   = ~fg->color.red;
 			colfg.green = ~fg->color.green;
-			colfg.blue = ~fg->color.blue;
-			colfg.alpha = fg->color.alpha;
-			XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg,
-					&revfg);
+			colfg.blue  = ~fg->color.blue;
+			colfg.alpha =  fg->color.alpha;
+			XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &revfg);
 			fg = &revfg;
 		}
 
-		if(bg == &dc.col[defaultbg]) {
+		if (bg == &dc.col[defaultbg]) {
 			bg = &dc.col[defaultfg];
 		} else {
-			colbg.red = ~bg->color.red;
+			colbg.red   = ~bg->color.red;
 			colbg.green = ~bg->color.green;
-			colbg.blue = ~bg->color.blue;
-			colbg.alpha = bg->color.alpha;
-			XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg,
-					&revbg);
+			colbg.blue  = ~bg->color.blue;
+			colbg.alpha =  bg->color.alpha;
+			XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg, &revbg);
 			bg = &revbg;
 		}
 	}
 
-	if(base.mode & ATTR_REVERSE) {
+	if (base.mode & ATTR_REVERSE) {
 		temp = fg;
 		fg = bg;
 		bg = temp;
 	}
 
-	if((base.mode & ATTR_BOLD_FAINT) == ATTR_FAINT) {
-		colfg.red = fg->color.red / 2;
+	if ((base.mode & ATTR_BOLD_FAINT) == ATTR_FAINT) {
+		colfg.red   = fg->color.red   / 2;
 		colfg.green = fg->color.green / 2;
-		colfg.blue = fg->color.blue / 2;
+		colfg.blue  = fg->color.blue  / 2;
 		XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &revfg);
 		fg = &revfg;
 	}
 
-	if(base.mode & ATTR_BLINK && term.mode & MODE_BLINK)
+	if (base.mode & ATTR_BLINK && term.mode & MODE_BLINK)
 		fg = bg;
 
-	if(base.mode & ATTR_INVISIBLE)
+	if (base.mode & ATTR_INVISIBLE)
 		fg = bg;
 
 	/* Intelligent cleaning up of the borders. */
-	if(x == 0) {
+	if (x == 0) {
 		xclear(0, (y == 0)? 0 : winy, borderpx,
-			winy + xw.ch + ((y >= term.row-1)? xw.h : 0));
+		       winy + xw.ch + ((y >= term.row - 1) ? xw.h : 0));
 	}
-	if(x + charlen >= term.col) {
-		xclear(winx + width, (y == 0)? 0 : winy, xw.w,
-			((y >= term.row-1)? xw.h : (winy + xw.ch)));
+	if (x + charlen >= term.col) {
+		xclear(winx + width, (y == 0) ? 0 : winy, xw.w,
+		       ((y >= term.row - 1) ? xw.h : (winy + xw.ch)));
 	}
-	if(y == 0)
+	if (y == 0)
 		xclear(winx, 0, winx + width, borderpx);
-	if(y == term.row-1)
+	if (y == term.row - 1)
 		xclear(winx, winy + xw.ch, winx + width, xw.h);
 
 	/* Clean up the region we want to draw to. */
 	XftDrawRect(xw.draw, bg, winx, winy, width, xw.ch);
 
 	/* Set the clip region because Xft is sometimes dirty. */
-	r.x = 0;
-	r.y = 0;
+	r.x      = 0;
+	r.y      = 0;
 	r.height = xw.ch;
-	r.width = width;
+	r.width  = width;
 	XftDrawSetClipRectangles(xw.draw, winx, winy, &r, 1);
 
 	/* Render the glyphs. */
 	XftDrawGlyphFontSpec(xw.draw, fg, specs, len);
 
 	/* Render underline and strikethrough. */
-	if(base.mode & ATTR_UNDERLINE) {
-		XftDrawRect(xw.draw, fg, winx, winy + dc.font.ascent + 1,
-				width, 1);
+	if (base.mode & ATTR_UNDERLINE) {
+		XftDrawRect(xw.draw, fg, winx, winy + dc.font.ascent + 1, width, 1);
 	}
 
-	if(base.mode & ATTR_STRUCK) {
-		XftDrawRect(xw.draw, fg, winx, winy + 2 * dc.font.ascent / 3,
-				width, 1);
+	if (base.mode & ATTR_STRUCK) {
+		XftDrawRect(xw.draw, fg, winx, winy + 2 * dc.font.ascent / 3, width, 1);
 	}
 
 	/* Reset clip to none. */
@@ -3544,25 +3528,26 @@ void
 xdrawglyph(Glyph g, int x, int y) {
 	int numspecs;
 	XftGlyphFontSpec spec;
+
 	numspecs = xmakeglyphfontspecs(&spec, &g, 1, x, y);
 	xdrawglyphfontspecs(&spec, g, numspecs, x, y);
 }
 
 void
 xdrawcursor(void) {
+	Glyph g = { ' ', ATTR_NULL, defaultbg, defaultcs };
 	static int oldx = 0, oldy = 0;
 	int curx;
-	Glyph g = {' ', ATTR_NULL, defaultbg, defaultcs};
 
-	LIMIT(oldx, 0, term.col-1);
-	LIMIT(oldy, 0, term.row-1);
+	LIMIT(oldx, 0, term.col - 1);
+	LIMIT(oldy, 0, term.row - 1);
 
 	curx = term.c.x;
 
 	/* adjust position if in dummy */
-	if(term.line[oldy][oldx].mode & ATTR_WDUMMY)
+	if (term.line[oldy][oldx].mode & ATTR_WDUMMY)
 		oldx--;
-	if(term.line[term.c.y][curx].mode & ATTR_WDUMMY)
+	if (term.line[term.c.y][curx].mode & ATTR_WDUMMY)
 		curx--;
 
 	g.u = term.line[term.c.y][term.c.x].u;
@@ -3570,19 +3555,19 @@ xdrawcursor(void) {
 	/* remove the old cursor */
 	xdrawglyph(term.line[oldy][oldx], oldx, oldy);
 
-	if(IS_SET(MODE_HIDE))
+	if (IS_SET(MODE_HIDE))
 		return;
 
 	/* draw the new one */
-	if(xw.state & WIN_FOCUSED) {
+	if (xw.state & WIN_FOCUSED) {
 		switch (xw.cursor) {
 			case 0: /* Blinking Block */
 			case 1: /* Blinking Block (Default) */
 			case 2: /* Steady Block */
-				if(IS_SET(MODE_REVERSE)) {
+				if (IS_SET(MODE_REVERSE)) {
 						g.mode |= ATTR_REVERSE;
-						g.fg = defaultcs;
-						g.bg = defaultfg;
+						g.fg    = defaultcs;
+						g.bg    = defaultfg;
 					}
 
 				g.mode |= term.line[term.c.y][curx].mode & ATTR_WIDE;
@@ -3591,35 +3576,36 @@ xdrawcursor(void) {
 			case 3: /* Blinking Underline */
 			case 4: /* Steady Underline */
 				XftDrawRect(xw.draw, &dc.col[defaultcs],
-						borderpx + curx * xw.cw,
-						borderpx + (term.c.y + 1) * xw.ch - cursorthickness,
-						xw.cw, cursorthickness);
+				            borderpx + curx * xw.cw,
+				            borderpx + (term.c.y + 1) * xw.ch
+					    - cursorthickness,
+				            xw.cw, cursorthickness);
 				break;
 			case 5: /* Blinking bar */
 			case 6: /* Steady bar */
 				XftDrawRect(xw.draw, &dc.col[defaultcs],
-						borderpx + curx * xw.cw,
-						borderpx + term.c.y * xw.ch,
-						cursorthickness, xw.ch);
+				            borderpx + curx * xw.cw,
+				            borderpx + term.c.y * xw.ch,
+				            cursorthickness, xw.ch);
 				break;
 		}
 	} else {
 		XftDrawRect(xw.draw, &dc.col[defaultcs],
-				borderpx + curx * xw.cw,
-				borderpx + term.c.y * xw.ch,
-				xw.cw - 1, 1);
+		            borderpx + curx * xw.cw,
+		            borderpx + term.c.y * xw.ch,
+		            xw.cw - 1, 1);
 		XftDrawRect(xw.draw, &dc.col[defaultcs],
-				borderpx + curx * xw.cw,
-				borderpx + term.c.y * xw.ch,
-				1, xw.ch - 1);
+		            borderpx + curx * xw.cw,
+		            borderpx + term.c.y * xw.ch,
+		            1, xw.ch - 1);
 		XftDrawRect(xw.draw, &dc.col[defaultcs],
-				borderpx + (curx + 1) * xw.cw - 1,
-				borderpx + term.c.y * xw.ch,
-				1, xw.ch - 1);
+		            borderpx + (curx + 1) * xw.cw - 1,
+		            borderpx + term.c.y * xw.ch,
+		            1, xw.ch - 1);
 		XftDrawRect(xw.draw, &dc.col[defaultcs],
-				borderpx + curx * xw.cw,
-				borderpx + (term.c.y + 1) * xw.ch - 1,
-				xw.cw, 1);
+		            borderpx + curx * xw.cw,
+		            borderpx + (term.c.y + 1) * xw.ch - 1,
+		            xw.cw, 1);
 	}
 	oldx = curx, oldy = term.c.y;
 }
@@ -3629,8 +3615,7 @@ void
 xsettitle(char *p) {
 	XTextProperty prop;
 
-	Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle,
-			&prop);
+	Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, &prop);
 	XSetWMName(xw.dpy, xw.win, &prop);
 	XSetTextProperty(xw.dpy, xw.win, &prop, xw.netwmname);
 	XFree(prop.value);
@@ -3650,25 +3635,23 @@ redraw(void) {
 void
 draw(void) {
 	drawregion(0, 0, term.col, term.row);
-	XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w,
-			xw.h, 0, 0);
+	XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w, xw.h, 0, 0);
 	XSetForeground(xw.dpy, dc.gc,
-			dc.col[IS_SET(MODE_REVERSE)?
-				defaultfg : defaultbg].pixel);
+	               dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel);
 }
 
 void
 drawregion(int x1, int y1, int x2, int y2) {
-	int i, x, y, ox, numspecs;
 	Glyph base, new;
 	XftGlyphFontSpec* specs;
+	int i, x, y, ox, numspecs;
 	int ena_sel = (sel.ob.x != -1) && (sel.alt == IS_SET(MODE_ALTSCREEN));
 
-	if(!(xw.state & WIN_VISIBLE))
+	if (!(xw.state & WIN_VISIBLE))
 		return;
 
-	for(y = y1; y < y2; y++) {
-		if(!term.dirty[y])
+	for (y = y1; y < y2; y++) {
+		if (!term.dirty[y])
 			continue;
 
 		xtermclear(0, y, term.col, y);
@@ -3678,25 +3661,25 @@ drawregion(int x1, int y1, int x2, int y2) {
 		numspecs = xmakeglyphfontspecs(specs, &term.line[y][x1], x2 - x1, x1, y);
 
 		i = ox = 0;
-		for(x = x1; x < x2 && i < numspecs; x++) {
+		for (x = x1; x < x2 && i < numspecs; x++) {
 			new = term.line[y][x];
-			if(new.mode == ATTR_WDUMMY)
+			if (new.mode == ATTR_WDUMMY)
 				continue;
-			if(ena_sel && selected(x, y))
+			if (ena_sel && selected(x, y))
 				new.mode ^= ATTR_REVERSE;
-			if(i > 0 && ATTRCMP(base, new)) {
+			if (i > 0 && ATTRCMP(base, new)) {
 				xdrawglyphfontspecs(specs, base, i, ox, y);
 				specs += i;
 				numspecs -= i;
 				i = 0;
 			}
-			if(i == 0) {
+			if (i == 0) {
 				ox = x;
 				base = new;
 			}
 			i++;
 		}
-		if(i > 0)
+		if (i > 0)
 			xdrawglyphfontspecs(specs, base, i, ox, y);
 	}
 	xdrawcursor();
@@ -3738,19 +3721,19 @@ void
 focus(XEvent *ev) {
 	XFocusChangeEvent *e = &ev->xfocus;
 
-	if(e->mode == NotifyGrab)
+	if (e->mode == NotifyGrab)
 		return;
 
-	if(ev->type == FocusIn) {
+	if (ev->type == FocusIn) {
 		XSetICFocus(xw.xic);
 		xw.state |= WIN_FOCUSED;
 		xseturgency(0);
-		if(IS_SET(MODE_FOCUS))
+		if (IS_SET(MODE_FOCUS))
 			ttywrite("\033[I", 3);
 	} else {
 		XUnsetICFocus(xw.xic);
 		xw.state &= ~WIN_FOCUSED;
-		if(IS_SET(MODE_FOCUS))
+		if (IS_SET(MODE_FOCUS))
 			ttywrite("\033[O", 3);
 	}
 }
@@ -3771,31 +3754,31 @@ kmap(KeySym k, uint state) {
 	int i;
 
 	/* Check for mapped keys out of X11 function keys. */
-	for(i = 0; i < LEN(mappedkeys); i++) {
-		if(mappedkeys[i] == k)
+	for (i = 0; i < LEN(mappedkeys); i++) {
+		if (mappedkeys[i] == k)
 			break;
 	}
-	if(i == LEN(mappedkeys)) {
-		if((k & 0xFFFF) < 0xFD00)
+	if (i == LEN(mappedkeys)) {
+		if ((k & 0xFFFF) < 0xFD00)
 			return NULL;
 	}
 
-	for(kp = key; kp < key + LEN(key); kp++) {
-		if(kp->k != k)
+	for (kp = key; kp < key + LEN(key); kp++) {
+		if (kp->k != k)
 			continue;
 
-		if(!match(kp->mask, state))
+		if (!match(kp->mask, state))
 			continue;
 
-		if(IS_SET(MODE_APPKEYPAD) ? kp->appkey < 0 : kp->appkey > 0)
+		if (IS_SET(MODE_APPKEYPAD) ? kp->appkey < 0 : kp->appkey > 0)
 			continue;
-		if(term.numlock && kp->appkey == 2)
+		if (term.numlock && kp->appkey == 2)
 			continue;
 
-		if(IS_SET(MODE_APPCURSOR) ? kp->appcursor < 0 : kp->appcursor > 0)
+		if (IS_SET(MODE_APPCURSOR) ? kp->appcursor < 0 : kp->appcursor > 0)
 			continue;
 
-		if(IS_SET(MODE_CRLF) ? kp->crlf < 0 : kp->crlf > 0)
+		if (IS_SET(MODE_CRLF) ? kp->crlf < 0 : kp->crlf > 0)
 			continue;
 
 		return kp->s;
@@ -3806,38 +3789,38 @@ kmap(KeySym k, uint state) {
 
 void
 kpress(XEvent *ev) {
-	XKeyEvent *e = &ev->xkey;
 	KeySym ksym;
-	char buf[32], *customkey;
-	int len;
 	Rune c;
-	Status status;
 	Shortcut *bp;
+	Status status;
+	XKeyEvent *e = &ev->xkey;
+	int len;
+	char buf[32], *customkey;
 
-	if(IS_SET(MODE_KBDLOCK))
+	if (IS_SET(MODE_KBDLOCK))
 		return;
 
 	len = XmbLookupString(xw.xic, e, buf, sizeof buf, &ksym, &status);
 	/* 1. shortcuts */
-	for(bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
-		if(ksym == bp->keysym && match(bp->mod, e->state)) {
+	for (bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
+		if (ksym == bp->keysym && match(bp->mod, e->state)) {
 			bp->func(&(bp->arg));
 			return;
 		}
 	}
 
 	/* 2. custom keys from config.h */
-	if((customkey = kmap(ksym, e->state))) {
+	if ((customkey = kmap(ksym, e->state))) {
 		ttysend(customkey, strlen(customkey));
 		return;
 	}
 
 	/* 3. composed string from input method */
-	if(len == 0)
+	if (len == 0)
 		return;
-	if(len == 1 && e->state & Mod1Mask) {
-		if(IS_SET(MODE_8BIT)) {
-			if(*buf < 0177) {
+	if (len == 1 && e->state & Mod1Mask) {
+		if (IS_SET(MODE_8BIT)) {
+			if (*buf < 0177) {
 				c = *buf | 0x80;
 				len = utf8encode(c, buf);
 			}
@@ -3857,14 +3840,14 @@ cmessage(XEvent *e) {
 	 * See xembed specs
 	 *  http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
 	 */
-	if(e->xclient.message_type == xw.xembed && e->xclient.format == 32) {
-		if(e->xclient.data.l[1] == XEMBED_FOCUS_IN) {
+	if (e->xclient.message_type == xw.xembed && e->xclient.format == 32) {
+		if (e->xclient.data.l[1] == XEMBED_FOCUS_IN) {
 			xw.state |= WIN_FOCUSED;
 			xseturgency(0);
-		} else if(e->xclient.data.l[1] == XEMBED_FOCUS_OUT) {
+		} else if (e->xclient.data.l[1] == XEMBED_FOCUS_OUT) {
 			xw.state &= ~WIN_FOCUSED;
 		}
-	} else if(e->xclient.data.l[0] == xw.wmdeletewin) {
+	} else if (e->xclient.data.l[0] == xw.wmdeletewin) {
 		/* Send SIGHUP to shell */
 		kill(pid, SIGHUP);
 		exit(0);
@@ -3875,9 +3858,9 @@ void
 cresize(int width, int height) {
 	int col, row;
 
-	if(width != 0)
+	if (width)
 		xw.w = width;
-	if(height != 0)
+	if (height)
 		xw.h = height;
 
 	col = (xw.w - 2 * borderpx) / xw.cw;
@@ -3890,7 +3873,7 @@ cresize(int width, int height) {
 
 void
 resize(XEvent *e) {
-	if(e->xconfigure.width == xw.w && e->xconfigure.height == xw.h)
+	if (e->xconfigure.width == xw.w && e->xconfigure.height == xw.h)
 		return;
 
 	cresize(e->xconfigure.width, e->xconfigure.height);
@@ -3899,11 +3882,11 @@ resize(XEvent *e) {
 void
 run(void) {
 	XEvent ev;
-	int w = xw.w, h = xw.h;
 	fd_set rfd;
-	int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0;
 	struct timespec drawtimeout, *tv = NULL, now, last, lastblink;
 	long deltatime;
+	int w = xw.w, h = xw.h;
+	int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0;
 
 	/* Waiting for window mapping */
 	do {
@@ -3913,13 +3896,13 @@ run(void) {
 		 * this is not unnecessary.It does not only filter the key event,
 		 * but some clientmessage for input method as well.
 		 */
-		if(XFilterEvent(&ev, None))
+		if (XFilterEvent(&ev, None))
 			continue;
-		if(ev.type == ConfigureNotify) {
+		if (ev.type == ConfigureNotify) {
 			w = ev.xconfigure.width;
 			h = ev.xconfigure.height;
 		}
-	} while(ev.type != MapNotify);
+	} while (ev.type != MapNotify);
 
 	ttynew();
 	cresize(w, h);
@@ -3927,70 +3910,68 @@ run(void) {
 	clock_gettime(CLOCK_MONOTONIC, &last);
 	lastblink = last;
 
-	for(xev = actionfps;;) {
+	for (xev = actionfps;;) {
 		FD_ZERO(&rfd);
 		FD_SET(cmdfd, &rfd);
 		FD_SET(xfd, &rfd);
 
-		if(pselect(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, tv, NULL) < 0) {
-			if(errno == EINTR)
+		if (pselect(MAX(xfd, cmdfd) + 1, &rfd, NULL, NULL, tv, NULL) < 0) {
+			if (errno == EINTR)
 				continue;
 			die("select failed: %s\n", strerror(errno));
 		}
-		if(FD_ISSET(cmdfd, &rfd)) {
+		if (FD_ISSET(cmdfd, &rfd)) {
 			ttyread();
-			if(blinktimeout) {
+			if (blinktimeout) {
 				blinkset = tattrset(ATTR_BLINK);
-				if(!blinkset)
+				if (!blinkset)
 					MODBIT(term.mode, 0, MODE_BLINK);
 			}
 		}
 
-		if(FD_ISSET(xfd, &rfd))
+		if (FD_ISSET(xfd, &rfd))
 			xev = actionfps;
 
 		clock_gettime(CLOCK_MONOTONIC, &now);
 		drawtimeout.tv_sec = 0;
-		drawtimeout.tv_nsec =  (1000 * 1E6)/ xfps;
+		drawtimeout.tv_nsec =  (1000 * 1E6) / xfps;
 		tv = &drawtimeout;
 
 		dodraw = 0;
-		if(blinktimeout && TIMEDIFF(now, lastblink) > blinktimeout) {
+		if (blinktimeout && TIMEDIFF(now, lastblink) > blinktimeout) {
 			tsetdirtattr(ATTR_BLINK);
 			term.mode ^= MODE_BLINK;
 			lastblink = now;
 			dodraw = 1;
 		}
 		deltatime = TIMEDIFF(now, last);
-		if(deltatime > 1000 / (xev ? xfps : actionfps)) {
+		if (deltatime > 1000 / (xev ? xfps : actionfps)) {
 			dodraw = 1;
 			last = now;
 		}
 
-		if(dodraw) {
-			while(XPending(xw.dpy)) {
+		if (dodraw) {
+			while (XPending(xw.dpy)) {
 				XNextEvent(xw.dpy, &ev);
-				if(XFilterEvent(&ev, None))
+				if (XFilterEvent(&ev, None))
 					continue;
-				if(handler[ev.type])
+				if (handler[ev.type])
 					(handler[ev.type])(&ev);
 			}
 
 			draw();
 			XFlush(xw.dpy);
 
-			if(xev && !FD_ISSET(xfd, &rfd))
+			if (xev && !FD_ISSET(xfd, &rfd))
 				xev--;
-			if(!FD_ISSET(cmdfd, &rfd) && !FD_ISSET(xfd, &rfd)) {
-				if(blinkset) {
-					if(TIMEDIFF(now, lastblink) \
-							> blinktimeout) {
+			if (!FD_ISSET(cmdfd, &rfd) && !FD_ISSET(xfd, &rfd)) {
+				if (blinkset) {
+					if (TIMEDIFF(now, lastblink) > blinktimeout) {
 						drawtimeout.tv_nsec = 1000;
 					} else {
 						drawtimeout.tv_nsec = (1E6 * \
 							(blinktimeout - \
-							TIMEDIFF(now,
-								lastblink)));
+							TIMEDIFF(now, lastblink)));
 					}
 					drawtimeout.tv_sec = \
 					    drawtimeout.tv_nsec / 1E9;
@@ -4018,7 +3999,7 @@ main(int argc, char *argv[]) {
 	uint cols = 80, rows = 24;
 
 	xw.l = xw.t = 0;
-	xw.isfixed = False;
+	xw.isfixed = 0;
 	xw.cursor = 0;
 
 	ARGBEGIN {
@@ -4029,18 +4010,17 @@ main(int argc, char *argv[]) {
 		opt_class = EARGF(usage());
 		break;
 	case 'e':
-		if(argc > 0)
+		if (argc > 0)
 			--argc, ++argv;
 		goto run;
 	case 'f':
 		opt_font = EARGF(usage());
 		break;
 	case 'g':
-		xw.gm = XParseGeometry(EARGF(usage()),
-				&xw.l, &xw.t, &cols, &rows);
+		xw.gm = XParseGeometry(EARGF(usage()), &xw.l, &xw.t, &cols, &rows);
 		break;
 	case 'i':
-		xw.isfixed = True;
+		xw.isfixed = 1;
 		break;
 	case 'o':
 		opt_io = EARGF(usage());
@@ -4060,10 +4040,10 @@ main(int argc, char *argv[]) {
 	} ARGEND;
 
 run:
-	if(argc > 0) {
+	if (argc) {
 		/* eat all remaining arguments */
 		opt_cmd = argv;
-		if(!opt_title && !opt_line)
+		if (!opt_title && !opt_line)
 			opt_title = basename(xstrdup(argv[0]));
 	}
 	setlocale(LC_CTYPE, "");
@@ -4075,4 +4055,3 @@ run:
 
 	return 0;
 }
-
-- 
1.8.5.5

>From 33eba6060fe7b35fa1352a365d665ef513e60b32 Mon Sep 17 00:00:00 2001
From: FRIGN <[email protected]>
Date: Wed, 8 Jul 2015 20:34:12 +0200
Subject: [PATCH 5/5] Make config.def.h more consistent

Looking a bit better now.
---
 config.def.h | 129 +++++++++++++++++++++++++----------------------------------
 1 file changed, 55 insertions(+), 74 deletions(-)

diff --git a/config.def.h b/config.def.h
index 5375c1c..e9075cb 100644
--- a/config.def.h
+++ b/config.def.h
@@ -1,65 +1,56 @@
 /* See LICENSE file for copyright and license details. */
 
-/*
- * appearance
- *
- * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
- */
-static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
-static int borderpx = 2;
-static char shell[] = "/bin/sh";
-static char *utmp = NULL;
+/* -- Appearance -- */
+/* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html */
+static char font[]      = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
+static int  borderpx    = 2;
+static char shell[]     = "/bin/sh";
+static char *utmp       = NULL;
 static char stty_args[] = "stty raw -echo -iexten echonl";
 
-/* identification sequence returned in DA and DECID */
+/* -- Identification sequence returned in DA and DECID -- */
 static char vtiden[] = "\033[?6c";
 
-/* Kerning / character bounding-box multipliers */
+/* -- Kerning / character bounding-box multipliers -- */
 static float cwscale = 1.0;
 static float chscale = 1.0;
 
-/*
- * word delimiter string
- *
- * More advanced example: " `'\"()[]{}"
- */
+/* -- Word delimiter string -- */
+/* More advanced example: " `'\"()[]{}" */
 static char worddelimiters[] = " ";
 
-/* selection timeouts (in milliseconds) */
+/* -- Selection timeouts -- */
+/* In milliseconds */
 static unsigned int doubleclicktimeout = 300;
 static unsigned int tripleclicktimeout = 600;
 
-/* alt screens */
+/* -- Alt screens -- */
 static int allowaltscreen = 1;
 
-/* frames per second st should at maximum draw to the screen */
+/* -- FPS limits -- */
 static unsigned int xfps = 120;
 static unsigned int actionfps = 30;
 
-/*
- * blinking timeout (set to 0 to disable blinking) for the terminal blinking
- * attribute.
- */
+/* -- Blinking timeout for the terminal blinking attribute -- */
+/* Set to 0 to disable blinking */
 static unsigned int blinktimeout = 800;
 
-/*
- * thickness of underline and bar cursors
- */
+/* -- Thickness of underline and bar cursors -- */
 static unsigned int cursorthickness = 2;
 
-/*
- * bell volume. It must be a value between -100 and 100. Use 0 for disabling
- * it
- */
+/* -- Bell volume -- */
+/* Must be between -100 and 100, setting it to 0 disables it */
 static int bellvolume = 0;
 
-/* TERM value */
+/* -- TERM value -- */
 static char termname[] = "st-256color";
 
+/* -- Spaces per tab -- */
 static unsigned int tabspaces = 8;
 
 
-/* Terminal colors (16 first used in escape sequence) */
+/* -- Terminal colors -- */
+/* 16 first used in escape sequences */
 static const char *colorname[] = {
 	/* 8 normal colors */
 	"black",
@@ -83,28 +74,23 @@ static const char *colorname[] = {
 
 	[255] = 0,
 
-	/* more colors can be added after 255 to use with DefaultXX */
+	/* Add colors here after 255 to use them with defaultXX */
 	"#cccccc",
 };
 
 
-/*
- * Default colors (colorname index)
- * foreground, background, cursor
- */
+/* -- Default colors -- */
+/* Foreground, background, cursor colors */
 static unsigned int defaultfg = 7;
 static unsigned int defaultbg = 0;
 static unsigned int defaultcs = 256;
 
-/*
- * Colors used, when the specific fg == defaultfg. So in reverse mode this
- * will reverse too. Another logic would only make the simple feature too
- * complex.
- */
+/* -- Fallback colors in case fg == defaultfg -- */
+/* This is reversed in reverse mode as well. */
 static unsigned int defaultitalic = 11;
 static unsigned int defaultunderline = 7;
 
-/* Internal mouse shortcuts. */
+/* -- Internal mouse shortcuts -- */
 /* Beware that overloading Button1 will disable the selection. */
 static Mousekey mshortcuts[] = {
 	/* button               mask            string */
@@ -112,7 +98,7 @@ static Mousekey mshortcuts[] = {
 	{ Button5,              XK_ANY_MOD,     "\005" },
 };
 
-/* Internal keyboard shortcuts. */
+/* -- Internal keyboard shortcuts -- */
 #define MODKEY Mod1Mask
 
 static Shortcut shortcuts[] = {
@@ -130,46 +116,42 @@ static Shortcut shortcuts[] = {
 	{ MODKEY,               XK_Num_Lock,    numlock,        {.i =  0} },
 };
 
-/*
- * Special keys (change & recompile st.info accordingly)
+/* -- Special keys -- */
+/* Don't forget to change & recompile st.info accordingly
  *
  * Mask value:
  * * Use XK_ANY_MOD to match the key no matter modifiers state
  * * Use XK_NO_MOD to match the key alone (no modifiers)
  * appkey value:
- * * 0: no value
- * * > 0: keypad application mode enabled
- * *   = 2: term.numlock = 1
- * * < 0: keypad application mode disabled
+ *  > 0: keypad application mode enabled
+ *       = 2: term.numlock = 1
+ *  = 0: no value
+ *  < 0: keypad application mode disabled
  * appcursor value:
- * * 0: no value
- * * > 0: cursor application mode enabled
- * * < 0: cursor application mode disabled
+ *  > 0: cursor application mode enabled
+ *  = 0: no value
+ *  < 0: cursor application mode disabled
  * crlf value
- * * 0: no value
- * * > 0: crlf mode is enabled
- * * < 0: crlf mode is disabled
+ *  > 0: crlf mode enabled
+ *  = 0: no value
+ *  < 0: crlf mode disabled
  *
- * Be careful with the order of the definitions because st searches in
+ * Be careful with the order of the definitions, because st seeks
  * this table sequentially, so any XK_ANY_MOD must be in the last
  * position for a key.
- */
-
-/*
+ *
  * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
- * to be mapped below, add them to this array.
+ * to be mapped below, add them to the following array.
  */
 static KeySym mappedkeys[] = { -1 };
 
-/*
- * State bits to ignore when matching key or button events.  By default,
- * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
- */
-static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
+/* -- State-bits ignored while matching key or button events -- */
+/* By default, numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. */
+static uint ignoremod = Mod2Mask | XK_SWITCH_MOD;
 
-/* Override mouse-select while mask is active (when MODE_MOUSE is set).
- * Note that if you want to use ShiftMask with selmasks, set this to an other
- * modifier, set to 0 to not use it. */
+/* -- Override mouse-select while mask is active (when MODE_MOUSE is set) -- */
+/* Note that if you want to use ShiftMask with selmasks, set this to an other
+ * modifier or to 0 to disable it. */
 static uint forceselmod = ShiftMask;
 
 static Key key[] = {
@@ -371,12 +353,11 @@ static Key key[] = {
 	{ XK_F35,           XK_NO_MOD,      "\033[23;5~",    0,    0,    0},
 };
 
-/*
- * Selection types' masks.
- * Use the same masks as usual.
- * Button1Mask is always unset, to make masks match between ButtonPress.
+/* -- Selection types' masks -- */
+/* Use the same masks as usual.
+ * Button1Mask is always unset to make masks match between ButtonPress,
  * ButtonRelease and MotionNotify.
- * If no match is found, regular selection is used.
+ * If no match is found, the regular selection is used.
  */
 static uint selmasks[] = {
 	[SEL_RECTANGULAR] = Mod1Mask,
-- 
1.8.5.5

Reply via email to