void *
 xmalloc(size_t len)
 {
-       void *p = malloc(len);
+       void *p;
 
-       if (!p)
-               die("Out of memory\n");
+       if (!(p = malloc(len)))
+               die("malloc: %s\n", strerror(errno));
 
        return p;
 }
 xrealloc(void *p, size_t len)
 {
        if ((p = realloc(p, len)) == NULL)
-               die("Out of memory\n");
+               die("realloc: %s\n", strerror(errno));
 
        return p;
 }
 xstrdup(char *s)
 {
        if ((s = strdup(s)) == NULL)
-               die("Out of memory\n");
+               die("strdup: %s\n", strerror(errno));
 
        return s;
 }
        errno = 0;
        if ((pw = getpwuid(getuid())) == NULL) {
                if (errno)
-                       die("getpwuid:%s\n", strerror(errno));
+                       die("getpwuid: %s\n", strerror(errno));
                else
                        die("who are you?\n");
        }
        pid_t p;
 
        if ((p = waitpid(pid, &stat, WNOHANG)) < 0)
-               die("Waiting for pid %hd failed: %s\n", pid, strerror(errno));
+               die("waiting for pid %hd failed: %s\n", pid, strerror(errno));
 
        if (pid != p)
                return;
 
        if (line) {
                if ((cmdfd = open(line, O_RDWR)) < 0)
-                       die("open line failed: %s\n", strerror(errno));
+                       die("open line '%s' failed: %s\n",
+                           line, strerror(errno));
                dup2(cmdfd, 0);
                stty(args);
                return cmdfd;
 
        switch (pid = fork()) {
        case -1:
-               die("fork failed\n");
+               die("fork failed: %s\n", strerror(errno));
                break;
        case 0:
                close(iofd);
 
        /* append read bytes to unprocessed bytes */
        if ((ret = read(cmdfd, buf+buflen, LEN(buf)-buflen)) < 0)
-               die("Couldn't read from shell: %s\n", strerror(errno));
+               die("couldn't read from shell: %s\n", strerror(errno));
        buflen += ret;
 
        written = twrite(buf, buflen, 0);
 
        for (i = 0; i < dc.collen; i++)
                if (!xloadcolor(i, NULL, &dc.col[i])) {
                        if (colorname[i])
-                               die("Could not allocate color '%s'\n", colorname[i]);
+                               die("could not allocate color '%s'\n", colorname[i]);
                        else
-                               die("Could not allocate color %d\n", i);
+                               die("could not allocate color %d\n", i);
                }
        loaded = 1;
 }
                if ((XftPatternGetInteger(f->match->pattern, "slant", 0,
                    &haveattr) != XftResultMatch) || haveattr < wantattr) {
                        f->badslant = 1;
-                       fputs("st: font slant does not match\n", stderr);
+                       fputs("font slant does not match\n", stderr);
                }
        }
 
                if ((XftPatternGetInteger(f->match->pattern, "weight", 0,
                    &haveattr) != XftResultMatch) || haveattr != wantattr) {
                        f->badweight = 1;
-                       fputs("st: font weight does not match\n", stderr);
+                       fputs("font weight does not match\n", stderr);
                }
        }
 
        FcPattern *pattern;
        double fontval;
 
-       if (fontstr[0] == '-') {
+       if (fontstr[0] == '-')
                pattern = XftXlfdParse(fontstr, False, False);
-       } else {
+       else
                pattern = FcNameParse((FcChar8 *)fontstr);
-       }
 
        if (!pattern)
-               die("st: can't open font %s\n", fontstr);
+               die("can't open font %s\n", fontstr);
 
        if (fontsize > 1) {
                FcPatternDel(pattern, FC_PIXEL_SIZE);
        }
 
        if (xloadfont(&dc.font, pattern))
-               die("st: can't open font %s\n", fontstr);
+               die("can't open font %s\n", fontstr);
 
        if (usedfontsize < 0) {
                FcPatternGetDouble(dc.font.match->pattern,
        FcPatternDel(pattern, FC_SLANT);
        FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC);
        if (xloadfont(&dc.ifont, pattern))
-               die("st: can't open font %s\n", fontstr);
+               die("can't open font %s\n", fontstr);
 
        FcPatternDel(pattern, FC_WEIGHT);
        FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD);
        if (xloadfont(&dc.ibfont, pattern))
-               die("st: can't open font %s\n", fontstr);
+               die("can't open font %s\n", fontstr);
 
        FcPatternDel(pattern, FC_SLANT);
        FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN);
        if (xloadfont(&dc.bfont, pattern))
-               die("st: can't open font %s\n", fontstr);
+               die("can't open font %s\n", fontstr);
 
        FcPatternDestroy(pattern);
 }
        XColor xmousefg, xmousebg;
 
        if (!(xw.dpy = XOpenDisplay(NULL)))
-               die("Can't open display\n");
+               die("can't open display\n");
        xw.scr = XDefaultScreen(xw.dpy);
        xw.vis = XDefaultVisual(xw.dpy, xw.scr);
 
        /* font */
        if (!FcInit())
-               die("Could not init fontconfig.\n");
+               die("could not init fontconfig.\n");
 
        usedfont = (opt_font == NULL)? font : opt_font;
        xloadfonts(usedfont, 0);